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
factor manipulation: edgelist to a matrix?
3 messages · Christopher Marcum, Veslot Jacques, Dimitris Rizopoulos
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