[R] Converting list to character
Lee, Chel Hee
chl948 at mail.usask.ca
Tue Nov 25 18:22:49 CET 2014
> do.call("rbind", TAB$x)
[,1] [,2]
1 "GR.3.8" "GR.3.8"
2 "GR.3.1" "GR.3.8"
4 "GR.3.8" "GR.3.8"
5 "GR.3.7" "GR.3.7"
6 "GR.3.8" "GR.3.8"
7 "GR.3.1" "GR.3.8"
9 "GR.3.8" "GR.3.8"
10 "GR.3.7" "GR.3.7"
11 "GR.3.1" "GR.3.1"
12 "GR.3.8" "GR.3.8"
13 "GR.3.1" "GR.3.8"
15 "GR.3.8" "GR.3.8"
16 "GR.3.1" "GR.3.1"
17 "GR.3.8" "GR.3.8"
18 "GR.3.1" "GR.3.8"
20 "GR.3.8" "GR.3.8"
>
Is this what you are looking for? I hope this helps.
Chel Hee Lee
On 11/25/2014 6:07 AM, Massimiliano Tripoli wrote:
>
>
> Dear all,
>
> I can't convert the result of aggregate function in a dataframe. My data
> looks like:
>
> mydata <- structure(list(ID = c(11, 11, 460, 460, 986, 986, 986, 986, 1251,
> 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1801, 1801, 1801, 1801
> ), YEAR = c(2009, 2010, 2010, 2011, 2008, 2009, 2010, 2011, 2008,
> 2008, 2009, 2009, 2010, 2010, 2011, 2011, 2008, 2009, 2010, 2011
> ), Y = c(158126, 153015, 3701, 5880, 718663, 661112, 527233,
> 558281, 450, 131714, 427, 124648, 425, 116500, 434, 123853, 17400,
> 16493, 8057, 8329), CODE = c("GR.3.7", "GR.3.7", "GR.3.1", "GR.3.1",
> "GR.3.8", "GR.3.8", "GR.3.8", "GR.3.8", "GR.3.1", "GR.3.8", "GR.3.1",
> "GR.3.8", "GR.3.1", "GR.3.8", "GR.3.1", "GR.3.8", "GR.3.8", "GR.3.8",
> "GR.3.8", "GR.3.8")), .Names = c("ID", "YEAR", "Y", "CODE"), row.names = c(NA,
> 20L), class = "data.frame")
>
> and by using aggregate function
>
> TAB <- aggregate(mydata$CODE,by=list(ID=mydata$ID,YEAR=mydata$YEAR),FUN=paste0)
>
> What I want is a dataframe like of printing TAB:
>> TAB
> ID YEAR x
> 1 986 2008 GR.3.8
> 2 1251 2008 GR.3.1, GR.3.8
> 3 1801 2008 GR.3.8
> 4 11 2009 GR.3.7
> 5 986 2009 GR.3.8
> 6 1251 2009 GR.3.1, GR.3.8
> 7 1801 2009 GR.3.8
> 8 11 2010 GR.3.7
> 9 460 2010 GR.3.1
> 10 986 2010 GR.3.8
> 11 1251 2010 GR.3.1, GR.3.8
> 12 1801 2010 GR.3.8
> 13 460 2011 GR.3.1
> 14 986 2011 GR.3.8
> 15 1251 2011 GR.3.1, GR.3.8
> 16 1801 2011 GR.3.8
>
>> str(TAB)[1:10]
> 'data.frame': 16 obs. of 3 variables:
> $ ID : num 986 1251 1801 11 986 ...
> $ YEAR: num 2008 2008 2008 2009 2009 ...
> $ x :List of 16
> ..$ 1 : chr "GR.3.8"
> ..$ 2 : chr "GR.3.1" "GR.3.8"
> ..$ 4 : chr "GR.3.8"
> ..$ 5 : chr "GR.3.7"
> ..$ 6 : chr "GR.3.8"
> ..$ 7 : chr "GR.3.1" "GR.3.8"
> ..$ 9 : chr "GR.3.8"
> ..$ 10: chr "GR.3.7"
> ..$ 11: chr "GR.3.1"
> ..$ 12: chr "GR.3.8"
> ..$ 13: chr "GR.3.1" "GR.3.8"
> ..$ 15: chr "GR.3.8"
> ..$ 16: chr "GR.3.1"
> ..$ 17: chr "GR.3.8"
> ..$ 18: chr "GR.3.1" "GR.3.8"
> ..$ 20: chr "GR.3.8"
> NULL
>
> As you can see the "x" coloumn is a list and I would want to change it to character variable.
> Anyone may help me?
> Thanks,
>
> Massimiliano
>
More information about the R-help
mailing list