如何匹配用逗号分隔的两个列元素

时间:2016-01-05 14:29:04

标签: r dataframe

我有一个名为mydf的数据框,其中列ab的元素用逗号分隔。我想要做的是匹配ab列中的值,删除(或忽略)括号()中的值,并获取{{1}中的common列}}

result

数据:

mydf
    a                           b                 
1   at1 (1) , 23-x (0)             at1,23-x,gt 
2   hh (2) , pp (0)             pp
3   cg (4) , gh (9) , th (7)    th,cg


result
    a                           b                 common
1   at1 (1) , 23-x (0)             at1,23-x,gt          at1,23-x
2   hh (2) , pp (0)             pp                pp    
3   cg (4) , gh (9) , th (7)    rh,cg             cg             

1 个答案:

答案 0 :(得分:4)

我们可以遍历数据集的列(lapply(mydf, ..),使用str_extract来获取字母字符。然后,使用intersect获取相应list元素的Map,将toStringunlist加入公共元素,并将vector指定为一个新专栏" common"在数据集中。

library(stringr)
lst <- lapply(mydf, function(x)str_extract_all(x, '\\b[a-z]+\\b'))
mydf$common <- unlist(Map(function(x,y) toString(intersect(x,y)),
                            lst[[1]], lst[[2]]))