Message-ID: <1407170223.80489.YahooMailNeo@web160604.mail.bf1.yahoo.com>
Date: 2014-08-04T16:37:03Z
From: Zilefac Elvis
Subject: Convert some columns of List to dataframe R
In-Reply-To: <CAAJSdjhENVh3d+LhiS_sLGawQ9ahu5G9EUAgUchp3azi-nxGWQ@mail.gmail.com>
Great! Thanks, John.
For the eye sees not itself, but by reflection and someother things
On Sunday, August 3, 2014 4:54 PM, John McKown <john.archie.mckown at gmail.com> wrote:
On Sun, Aug 3, 2014 at 5:12 PM, Zilefac Elvis <zilefacelvis at yahoo.com> wrote:
> Dear All,
> I have a List in R and would like to convert it to data.frame.
> Below is a reproducible example. I can do something like:
>
> x1<-do.call(cbind.data.frame, lst3) #OR
> x1<-as.data.frame(lst3).
>
> However, my output looks like this:
>
> Year Site? x? Year Site? x
> 2001 G101 33.1 2001 G102 34
>
> I would like to have as my output:
>
> Year? G101? G102
> 2001? 33.1? 34
>
>
> Thanks
> Atem.
> ----------------------------------------------------------------------------------
>
>
>? list(structure(list(Year = 2001L, Site = structure(1L, .Label = "G101", class = "factor"),
>? ? x = 33.1), .Names = c("Year", "Site", "x"), row.names = c(NA,
> -1L), class = "data.frame"), structure(list(Year = 2001L, Site = structure(1L, .Label = "G102", class = "factor"),
>? ? x = 34), .Names = c("Year", "Site", "x"), row.names = c(NA,
> -1L), class = "data.frame"))
>
Try rbind_all in the dplyr package together with the dcast() function
in the reshpae2 package
output1 <- rbind_all(as.list(lst3));
realOutput <- dcast(output1, Year ~ Site, value.var="x");
Example transcript:
> lst3 <- list(structure(list(Year = 2001L, Site = structure(1L, .Label = "G101", class = "factor"),
+? ? x = 33.1), .Names = c("Year", "Site", "x"), row.names = c(NA,
+ -1L), class = "data.frame"), structure(list(Year = 2001L, Site =
structure(1L, .Label = "G102", class = "factor"),
+? ? x = 34), .Names = c("Year", "Site", "x"), row.names = c(NA,
+ -1L), class = "data.frame"))
> library(dplyr);
> rbind_all(lst3);
? Year Site? ? x
1 2001 G101 33.1
2 2001 G102 34.0
Warning message:
In rbind_all(lst3) : Unequal factor levels: coercing to character
> dcast(output1,Year ~ Site,value.var="x")
? Year G101 G102
1 2001 33.1? 34
>
Sorry for the extra reply.? 60 hour work weeks and 61 years of age
don't mix well. Back to watching Beakman on Netflix.
--
There is nothing more pleasant than traveling and meeting new people!
Genghis Khan
Maranatha! <><
John McKown