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