我有一个名为mydf
的数据框,其中列a
和b
的元素用逗号分隔。我想要做的是匹配a
和b
列中的值,删除(或忽略)括号()
中的值,并获取{{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
答案 0 :(得分:4)
我们可以遍历数据集的列(lapply(mydf, ..
),使用str_extract
来获取字母字符。然后,使用intersect
获取相应list
元素的Map
,将toString
,unlist
加入公共元素,并将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]]))