R 匹配数据帧中的值

R 匹配数据帧中的值,r,dataframe,match,R,Dataframe,Match,考虑以下两个数据帧: > df1 <- data.frame(vals = c("a","b","c"), index = 1:3) > > df1 vals index 1 a 1 2 b 2 3 c 3 > > df2 <- data.frame(a = c("x1","x2","x3"), b = c("a,b,c","b,c","a,c")) > > df2 a b 1

考虑以下两个数据帧:

> df1 <- data.frame(vals = c("a","b","c"), index = 1:3)
> 
> df1
  vals index
1    a     1
2    b     2
3    c     3
> 
> df2 <- data.frame(a = c("x1","x2","x3"), b = c("a,b,c","b,c","a,c"))
> 
> df2
   a     b
1 x1 a,b,c
2 x2   b,c
3 x3   a,c
>df1
>df1
VAL指数
1 a 1
2 b 2
3 c 3
> 
>df2
>df2
a b
1 x1 a、b、c
2×2 b,c
3×3 a,c
我试图使用列
vals
作为匹配标准,用数据框
df1
中的值
index
替换数据框
df2
b
的值。然而,数据帧
df2
的列
b
是一个逗号分隔的字符串,这使得它更加复杂

有人能帮忙吗?

df2$c
df2$c <- sapply(strsplit(as.character(df2$b),","),function(x) {
                 paste(df1[na.omit(match(x,df1$vals)),"index"],collapse=",")
                })

#    a     b     c
# 1 x1 a,b,c 1,2,3
# 2 x2   b,c   2,3
# 3 x3   a,c   1,3