Hello All, I have had considerable bad luck with attempting the following with for loops. Here is the problem: # Suppose we have a data.frame with the following data, which can be considered a type of edgelist (for those with networks backgrounds): # # V1 V2 # 1 A # 1 A # 1 B # 2 A # 3 C # 3 A # 3 C # 3 B # # I want the output of the function to produce a matrix, such that #each factor of V1 is a row, and each corresponding value at position k of V2 is the i,j^th element of the new matrix, with missing values otherwise. The desired output should be: # [,1] [,2] [,3] [,4] # [1,] A A B NA # [2,] A NA NA NA # [3,] C A C B I have explored the reshape package as well as the network package in this pursuit, with no luck. Thanks, Chris Marcum UCI Sociology
do.call(rbind,lapply(split(as.character(z[,2]),z[,1]), function(x) c(x, rep(NA, max(table(z[,1]))-length(x))))) Jacques VESLOT CEMAGREF - UR Hydrobiologie Route de C?zanne - CS 40061 13182 AIX-EN-PROVENCE Cedex 5, France T?l + 0033 04 42 66 99 76 email jacques.veslot at cemagref.fr>-----Message d'origine----- >De?: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] De >la part de Christopher Marcum >Envoy??: jeudi 20 d?cembre 2007 08:33 >??: r-help at stat.math.ethz.ch >Objet?: [R] factor manipulation: edgelist to a matrix? > >Hello All, > >I have had considerable bad luck with attempting the following with for >loops. Here is the problem: > > ># Suppose we have a data.frame with the following data, which can be >considered a type of edgelist (for those with networks backgrounds): ># ># V1 V2 ># 1 A ># 1 A ># 1 B ># 2 A ># 3 C ># 3 A ># 3 C ># 3 B ># ># I want the output of the function to produce a matrix, such that #each >factor of V1 is a row, and each corresponding value at position k of V2 is >the i,j^th element of the new matrix, with missing values otherwise. The >desired output should be: ># [,1] [,2] [,3] [,4] ># [1,] A A B NA ># [2,] A NA NA NA ># [3,] C A C B > >I have explored the reshape package as well as the network package in this >pursuit, with no luck. > >Thanks, >Chris Marcum >UCI Sociology > >______________________________________________ >R-help at r-project.org mailing list >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide http://www.R-project.org/posting- >guide.html >and provide commented, minimal, self-contained, reproducible code.
one way is the following:
V1 <- c(1,1,1,2,3,3,3,3)
V2 <- LETTERS[c(1,1,2,1,3,1,3,2)]
tab <- table(V1, ave(V1, V1, FUN = seq_along))
vals <- as.vector(t(tab))
vals[vals != 0] <- unlist(split(V2, V1))
vals[vals == 0] <- NA
matrix(vals, nrow(tab), ncol(tab), TRUE)
I hope it helps.
Best,
Dimitris
----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven
Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
http://www.student.kuleuven.be/~m0390867/dimitris.htm
----- Original Message -----
From: "Christopher Marcum" <cmarcum at uci.edu>
To: <r-help at stat.math.ethz.ch>
Sent: Thursday, December 20, 2007 8:33 AM
Subject: [R] factor manipulation: edgelist to a matrix?
> Hello All,
>
> I have had considerable bad luck with attempting the following with
> for
> loops. Here is the problem:
>
>
> # Suppose we have a data.frame with the following data, which can be
> considered a type of edgelist (for those with networks backgrounds):
> #
> # V1 V2
> # 1 A
> # 1 A
> # 1 B
> # 2 A
> # 3 C
> # 3 A
> # 3 C
> # 3 B
> #
> # I want the output of the function to produce a matrix, such that
> #each
> factor of V1 is a row, and each corresponding value at position k of
> V2 is
> the i,j^th element of the new matrix, with missing values otherwise.
> The
> desired output should be:
> # [,1] [,2] [,3] [,4]
> # [1,] A A B NA
> # [2,] A NA NA NA
> # [3,] C A C B
>
> I have explored the reshape package as well as the network package
> in this
> pursuit, with no luck.
>
> Thanks,
> Chris Marcum
> UCI Sociology
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm