如何通过R中的因子从列表中创建数据帧

时间:2015-10-14 07:03:27

标签: r list split

我有一个列表数据

test1 <- list( c(ID='a',VALUE='va1'), 
               c(ID='a',VALUE='va2'),
               c(ID='b',VALUE='vb1'),
               c(ID='c',VALUE='vc1'), 
               c(ID='c',VALUE='vc2'),
               c(ID='c',VALUE='vc3'))

并且,我想拆分并合并为3个具有ID名称的数据帧,

请告诉我如何将每个数据存储到名为ID的新数据框中。

|  ID  |    VALUE    |
|  a   |   va1 va2   | 

|  ID  |    VALUE    |    
|  b   |     vb2     | 

|  ID  |    VALUE    |
|  c   | vc1 vc2 vc3 |     

提前致谢

1 个答案:

答案 0 :(得分:3)

base R中,我们可以在将列表绑定在一起后聚合VALUE,然后拆分。

a <- aggregate(VALUE ~ ., do.call(rbind, test1), toString)
split(a, a$ID)
# $a
#   ID    VALUE
# 1  a va1, va2
# 
# $b
#   ID VALUE
# 2  b   vb1
# 
# $c
#   ID         VALUE
# 3  c vc1, vc2, vc3

要访问每个数据框,您可以使用:

s <- split(a, a$ID)
s$a
#  ID    VALUE
#1  a va1, va2

#or
s[[1]]
#  ID    VALUE
#1  a va1, va2