匹配数据框中的值

时间:2013-06-04 07:03:48

标签: 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 x1 a,b,c
2 x2   b,c
3 x3   a,c

我正在尝试使用列b作为匹配条件,使用数据框df2中的值index替换数据框df1中的vals值。但是,数据框b的列df2是逗号分隔的字符串,这使得它更复杂。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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