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

时间:2017-11-02 06:02:33

标签: r

假设我们有两个数据框:A:

COl1    COL2
1,2...  Hello
3       World

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

WAHHH
Danny
Bob
Nice

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

WAHHH COL2
Danny Hello
Bob   Hello
Nice  World

非常感谢

1 个答案:

答案 0 :(得分:1)

我们可以在'A'数据集中拆分'COl1',转换为numeric,获取序列,将list元素的名称设置为'COL2',stack为使用第二个数据集

转换为2列data.framecbind
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

或将replengths

一起使用
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