我有一个列表数据
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 |
提前致谢
答案 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