【发布时间】:2015-06-29 15:23:29
【问题描述】:
我有两张表如下:
a = read.table(text=' a b
1 c
1 d
2 c
2 a
2 b
3 a
', head=T)
b = read.table(text=' a c
1 x i
2 y j
3 z k
', head=T)
我希望结果是这样的:
1 x i c d
2 y j c a b
3 z k a
本来我想用tapply将它们转换成列表(例如aa = tapply(a[,2], a[,1], function(x) paste(x,collapse=","))),然后将其附加回表 b,但我被卡住了......
有什么建议吗? 谢谢一百万。
【问题讨论】:
-
你想合并两个data.frames。
-
你为什么不把它存储在一个列表中呢? data.frame 是具有一定限制的列表,例如列表的所有元素都具有相同的长度,这不适用于您的数据。即使您可以使用
""模拟所有元素的长度相同,您也可能会弄乱您的数据。 -
@rmuc8,我也这么认为.. 但是例如, (bb = tapply(b[,1:2], b[,1], function(x) paste(x,collapse= ","))) 给我“参数必须具有相同长度”的错误.. 怎么办?
-
@Pascal ,是的,我想合并 2 帧,以元素 1 为例,我不希望结果是 1 xic,1 xid,我想要 1 xicd,这就是为什么我我被困住了。 :(