Hi Kristi It doesn't seem that unstack can do it for you. Here is one way:
library(reshape) data.molten <- melt(data, id = c("siteS", "species")) cast(data.molten, siteS ~ species) siteS sa sb sc sd se sg 1 11a 11 NA 37 NA NA 51 2 12d 15 NA NA NA NA NA 3 1a 31 55 62 NA NA NA 4 2v 42 NA NA 40 NA NA 5 6a 30 23 74 84 10 NA > Yours sincerely / Med venlig hilsen Frede Aakmann Tøgersen Specialist, M.Sc., Ph.D. Plant Performance & Modeling Technology & Service Solutions T +45 9730 5135 M +45 2547 6050 fr...@vestas.com http://www.vestas.com Company reg. name: Vestas Wind Systems A/S This e-mail is subject to our e-mail disclaimer statement. Please refer to www.vestas.com/legal/notice If you have received this e-mail in error please contact the sender. > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] > On Behalf Of Kristi Glover > Sent: 27. maj 2014 12:54 > To: R-help > Subject: [R] How to unstack three columns into rows? > > Dear R User, > I was wondering how I can unstack my data. For example I have following > data set > > data<-structure(list(siteS = structure(c(3L, 3L, 3L, 4L, 4L, 5L, 5L, > 5L, 5L, 5L, 1L, 1L, 1L, 2L), .Label = c("11a", "12d", "1a", "2v", > "6a"), class = "factor"), species = structure(c(1L, 2L, 3L, 1L, > 4L, 1L, 4L, 5L, 2L, 3L, 1L, 6L, 3L, 1L), .Label = c("sa", "sb", > "sc", "sd", "se", "sg"), class = "factor"), abundance = c(31L, > 55L, 62L, 42L, 40L, 30L, 84L, 10L, 23L, 74L, 11L, 51L, 37L, 15L > )), .Names = c("siteS", "species", "abundance"), class = "data.frame", > row.names = c(NA, > -14L)) > > I wanted to have this data into following format > > newData<-structure(list(siteS = structure(c(3L, 4L, 5L, 1L, 2L), .Label = > c("11a", > "12d", "1a", "2v", "6a"), class = "factor"), sa = c(31L, 42L, > 30L, 11L, 15L), sb = c(55L, NA, 84L, NA, NA), sc = c(62L, NA, > 10L, 37L, NA), sd = c(NA, 40L, 23L, NA, NA), se = c(NA, NA, 74L, > NA, NA), sg = c(NA, NA, NA, 51L, NA)), .Names = c("siteS", "sa", > "sb", "sc", "sd", "se", "sg"), class = "data.frame", row.names = c(NA, > -5L)) > > I tried several ways such as: > > data.frame(unstack(data, species~siteS)) > Error in data.frame(`11a` = c("sa", "sg", "sc"), `12d` = "sa", `1a` = c("sa", > : > arguments imply differing number of rows: 3, 1, 2, 5 > > > > [[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.