提取合并并从两个数据框创建一个新列

时间:2016-07-12 00:11:11

标签: r dataframe data.table

我有两个这样的数据框架。

A:

   A1 A2
1:  a  e
2:  b  f
3:  c  g
4:  d  h

B:

        B1  B2
1:       a   1
2: b,i,j,k   2
3:     a,q 3,4
4:       e 4,5
5:   c,d,f   6

一旦A1属于B1,我想创建一个新的列A3使用这样的信息B2

  A3
1 1,3,4
2     2
3     6
4     6

1 个答案:

答案 0 :(得分:1)

您可以使用A$A1使用sapply循环grep,并使用匹配来提取B1的行索引,并将其用于子集{{1} }:

B2

或以data.table表示法,

A$A3 <- sapply(A$A1, function(x){paste(B$B2[grep(x, B$B1)], collapse = ',')})

A
##    A1 A2    A3
## 1:  a  e 1,3,4
## 2:  b  f     2
## 3:  c  g     6
## 4:  d  h     6