[R] How to unstack three columns into rows?

John Kane jrkrideau at inbox.com
Wed May 28 17:12:54 CEST 2014


Hi Petr

I think cast() has been dropped from the most recent reshape2 and you need dcast(data, siteS~species) instead

John Kane
Kingston ON Canada


> -----Original Message-----
> From: petr.pikal at precheza.cz
> Sent: Tue, 27 May 2014 11:46:13 +0000
> To: kristi.glover at hotmail.com, r-help at r-project.org
> Subject: Re: [R] How to unstack three columns into rows?
> 
> Hi
> 
> cast(data, siteS~species)
> 
> gives you quite close result, only row ordering is different
> 
> Regards
> Petr
> 
> 
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>> project.org] On Behalf Of Kristi Glover
>> Sent: Tuesday, May 27, 2014 12:54 PM
>> 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 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.
> 
> ________________________________
> Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a jsou
> určeny pouze jeho adresátům.
> Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě
> neprodleně jeho odesílatele. Obsah tohoto emailu i s přílohami a jeho
> kopie vymažte ze svého systému.
> Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento
> email jakkoliv užívat, rozšiřovat, kopírovat či zveřejňovat.
> Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou modifikacemi
> či zpožděním přenosu e-mailu.
> 
> V případě, že je tento e-mail součástí obchodního jednání:
> - vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření
> smlouvy, a to z jakéhokoliv důvodu i bez uvedení důvodu.
> - a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně
> přijmout; Odesílatel tohoto e-mailu (nabídky) vylučuje přijetí nabídky ze
> strany příjemce s dodatkem či odchylkou.
> - trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve
> výslovným dosažením shody na všech jejích náležitostech.
> - odesílatel tohoto emailu informuje, že není oprávněn uzavírat za
> společnost žádné smlouvy s výjimkou případů, kdy k tomu byl písemně
> zmocněn nebo písemně pověřen a takové pověření nebo plná moc byly
> adresátovi tohoto emailu případně osobě, kterou adresát zastupuje,
> předloženy nebo jejich existence je adresátovi či osobě jím zastoupené
> známá.
> 
> This e-mail and any documents attached to it may be confidential and are
> intended only for its intended recipients.
> If you received this e-mail by mistake, please immediately inform its
> sender. Delete the contents of this e-mail with all attachments and its
> copies from your system.
> If you are not the intended recipient of this e-mail, you are not
> authorized to use, disseminate, copy or disclose this e-mail in any
> manner.
> The sender of this e-mail shall not be liable for any possible damage
> caused by modifications of the e-mail or by delay with transfer of the
> email.
> 
> In case that this e-mail forms part of business dealings:
> - the sender reserves the right to end negotiations about entering into a
> contract in any time, for any reason, and without stating any reasoning.
> - if the e-mail contains an offer, the recipient is entitled to
> immediately accept such offer; The sender of this e-mail (offer) excludes
> any acceptance of the offer on the part of the recipient containing any
> amendment or variation.
> - the sender insists on that the respective contract is concluded only
> upon an express mutual agreement on all its aspects.
> - the sender of this e-mail informs that he/she is not authorized to
> enter into any contracts on behalf of the company except for cases in
> which he/she is expressly authorized to do so in writing, and such
> authorization or power of attorney is submitted to the recipient or the
> person represented by the recipient, or the existence of such
> authorization is known to the recipient of the person represented by the
> recipient.
> ______________________________________________
> 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.

____________________________________________________________
FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!



More information about the R-help mailing list