I have data in the following list format: USER,VARIABLE,COUNT user1, var1, 3 user1, var2, 4 user2, var1, 7 userN, var12, 5 And would like to have it format as a matrix: var1 var2 var12 user1 3 4 user2 7 userN 5 What is the suggested method to do this for 1 million rows, with 12 variables and ~ 4,000 unique users? Thank you, Tim Stutt tim@ischool.berkeley.edu [[alternative HTML version deleted]]
R. Michael Weylandt
2012-Apr-19 20:35 UTC
[R] suggested method to transform list to a matrix
Use matrix subsetting like this: x <- matrix(1:9,3) rownames(x) <- letters[1:3] colnames(x) <- LETTERS[1:3] print(x) usrs <- c("a","b","a") vars <- c("C","C","A") counts <- c(10,11,12) x[cbind(usrs, vars)] <- counts print(x) Hope this helps, Michael On Thu, Apr 19, 2012 at 1:48 PM, Tim Stutt <tim at ischool.berkeley.edu> wrote:> I have data in the following list format: > > USER,VARIABLE,COUNT > user1, var1, 3 > user1, var2, 4 > user2, var1, 7 > userN, var12, 5 > > And would like to have it format as a matrix: > > ? ? ? ? ? ? ? ?var1 ? ? ? ? ? ?var2 ? ? ? ? ? ?var12 > user1 ? 3 ? ? ? ? ? ? ? 4 > user2 ? 7 > userN ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 > > What is the suggested method to do this for 1 million rows, with 12 variables and ~ 4,000 unique users? > > Thank you, > > Tim Stutt > tim at ischool.berkeley.edu > > > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > 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.
On Apr 19, 2012, at 1:48 PM, Tim Stutt wrote:> I have data in the following list format: > > USER,VARIABLE,COUNT > user1, var1, 3 > user1, var2, 4 > user2, var1, 7 > userN, var12, 5 > > And would like to have it format as a matrix: > > var1 var2 var12 > user1 3 4 > user2 7 > userN 5 > > What is the suggested method to do this for 1 million rows, with 12 > variables and ~ 4,000 unique users??xtabs xtabs( COUNT ~ USER + VARIABLE, data=dfrm ) -- David Winsemius, MD West Hartford, CT