R - 提取合并并从两个数据帧创建新列



我有两个这样的数据框。

一个:

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

乙:

        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

您可以使用 sapply 遍历A$A1,使用 grep 拉出具有匹配项的 B1 的行索引,并使用它来子集B2

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

或在数据表表示法中,

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

最新更新