我有两个这样的数据框。
一个:
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 = ',')]})][]