繁体   English   中英

如何使用R中的索引列表合并两个data.frame?

[英]How to merge two data.frame using index list in R?

可以说我们有两个数据帧:A:

COl1    COL2
1,2...  Hello
3       World

其中COL1中的每个元素都是数字的向量。 和B:

WAHHH
Danny
Bob
Nice

有没有一种简单的方法可以使他们变成这样:

WAHHH COL2
Danny Hello
Bob   Hello
Nice  World

非常感谢

我们可以在'A'数据集中拆分'COl1',转换为numeric ,得到序列,用'COL2'设置list元素的名称, stack以转换为2列data.frame并与第二个数据集cbind

cbind(B, setNames(stack(setNames(lapply(strsplit(A$COl1, ":"), 
      function(x) Reduce(`:`, as.numeric(x))), A$COL2))[2], "COL2"))
#  WAHHH  COL2
#1 Danny Hello
#2   Bob Hello
#3  Nice World

更新

如果“ COl1”存储为list

cbind(B, setNames(stack(setNames(A$COl1, A$COL2))[2], "COL2"))
#  WAHHH  COL2
#1 Danny Hello
#2   Bob Hello
#3  Nice World

或使用rep lengths

data.frame(B, COL2=rep(A$COL2, lengths(A$COl1)))
#  WAHHH  COL2
#1 Danny Hello
#2   Bob Hello
#3  Nice World

注意:如果'COl1'是factor类,请使用strsplit(as.character(A$COl1), ":") l

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM