Sorry, there was a typo in my original message: > df <- structure(list(var = c(1, 0, 0, 1, 0, 2, 2, 0, 2, 0), + cauc = c(6462.32876712329, 1585.27397260274, 2481.67808219178, + 344.178082191781, 8871.57534246575, 816.780821917808, + 6031.33561643836, 1013.52739726027, 4913.52739726027, + 1517.25)), .Names = c("var", "cauc"), row.names = c(NA, 10L), + class = "data.frame") > datlst <- unstack(df, cauc~var) > # or datlst <- split(df$cauc, df$var) > datlst $`0` [1] 1585.274 2481.678 8871.575 1013.527 1517.250
$`1` [1] 6462.3288 344.1781 $`2` [1] 816.7808 6031.3356 4913.5274 > MaxL <- max(sapply(datlst, length)) > datmat <- sapply(datlst, function(x) c(x, rep(NA, MaxL-length(x)))) > datmat 0 1 2 [1,] 1585.274 6462.3288 816.7808 [2,] 2481.678 344.1781 6031.3356 [3,] 8871.575 NA 4913.5274 [4,] 1013.527 NA NA [5,] 1517.250 NA NA David -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of David Carlson Sent: Monday, September 2, 2013 4:38 PM To: 'Wim Kreinen'; 'r-help' Subject: Re: [R] restructure my data Thanks for the reproducible data set. The unstack() function produces a list of three vectors, one for each value of var, but it cannot combine them into a matrix since the number of entries in each is not the same. To get that you need to pad each vector with NAs: > df <- structure(list(var = c(1, 0, 0, 1, 0, 2, 2, 0, 2, 0), cauc = + c(6462.32876712329, + 1585.27397260274, 2481.67808219178, 344.178082191781, 8871.57534246575, + 816.780821917808, 6031.33561643836, 1013.52739726027, 4913.52739726027, + 1517.25)), .Names = c("var", "cauc"), row.names = c(NA, 10L), class = + "data.frame") > datlst <- unstack(dat, cauc~var) > datlst $`0` [1] 1585.274 2481.678 8871.575 1013.527 1517.250 $`1` [1] 6462.3288 344.1781 $`2` [1] 816.7808 6031.3356 4913.5274 > MaxL <- max(sapply(datlst, length)) > datmat <- sapply(datlst, function(x) c(x, rep(NA, MaxL-length(x)))) > datmat 0 1 2 [1,] 1585.274 6462.3288 816.7808 [2,] 2481.678 344.1781 6031.3356 [3,] 8871.575 NA 4913.5274 [4,] 1013.527 NA NA [5,] 1517.250 NA NA ------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Wim Kreinen Sent: Monday, September 2, 2013 12:07 PM To: r-help Subject: [R] restructure my data My data is in this form: var has 3 conditions (0,1,2) > df var cauc 1 1 6462.3288 2 0 1585.2740 3 0 2481.6781 4 1 344.1781 5 0 8871.5753 6 2 816.7808 7 2 6031.3356 8 0 1013.5274 9 2 4913.5274 10 0 1517.2500 For the three conditions (0,1,2) I want the cauc-values to be listed like this 0 1 2 1585,2740 6462,3288 816.7808 2481.6781 344.1781 6031.3356 ... Thanks Wim > dput (df) structure(list(var = c(1, 0, 0, 1, 0, 2, 2, 0, 2, 0), cauc = c(6462.32876712329, 1585.27397260274, 2481.67808219178, 344.178082191781, 8871.57534246575, 816.780821917808, 6031.33561643836, 1013.52739726027, 4913.52739726027, 1517.25)), .Names = c("var", "cauc"), row.names = c(NA, 10L), class = "data.frame") > [[alternative HTML version deleted]] ______________________________________________ R-help@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. ______________________________________________ R-help@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. ______________________________________________ R-help@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.