从R中的单元格中删除重复的单词

时间:2017-06-21 18:52:22

标签: r list unique

我有一个2列数据框,其中第一列是数字,第二列包含研究类别列表。我的数据的简化版本:

aa <- data.frame(a=c(1:4),b=c("Fisheries, Fisheries, Geography, Marine Biology", 
"Fisheries", "Marine Biology, Marine Biology, Fisheries, Zoology", "Geography"))

我想将列b转换为唯一的元素列表,即删除重复项,以便最终结果为

    a        b
    1        Fisheries, Geography, Marine Biology
    2        Fisheries
    3        Marine Biology, Fisheries, Zoology
    4        Geography

我能够对列表中的各个元素执行此操作,例如,使用 unique(unlist(strsplit(aa [1])))但仅限于单个元素,而不是整个列(否则它返回整个列的单个唯一列表)。我无法弄清楚如何为整个列表执行此操作,一次一个元素。也许用lapply并为* unique编写我自己的函数(unlist(strsplit()))?

非常感谢!

1 个答案:

答案 0 :(得分:0)

这应该适合你。

aa <- data.frame(a=c(1:4),b=c("Fisheries, Fisheries, Geography, Marine Biology", 
                              "Fisheries", "Marine Biology, Marine Biology, Fisheries, Zoology", "Geography"))

aa$b <- sapply(aa$b, function(x) paste(unique(unlist(str_split(x,", "))), collapse = ", "))