【问题标题】:Remove duplicate words from cells in R从 R 中的单元格中删除重复的单词
【发布时间】:2017-06-21 18:52:22
【问题描述】:

我有一个 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())) 编写我自己的函数?

非常感谢!

【问题讨论】:

  • 这样的事情会起作用:sapply(strsplit(as.character(aa$b), ", "), function(x) paste(unique(x), collapse=", ")).
  • 行得通!完美的!非常感谢。

标签: r list unique


【解决方案1】:

这应该适合你。

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 = ", "))

【讨论】:

  • 嘿!你是最好的!我只需要先将 aa$b 转换为字符(这是一个因素),但它就成功了!太棒了 - 非常感谢。
猜你喜欢
  • 2016-01-19
  • 2015-11-08
  • 1970-01-01
  • 2021-11-18
  • 2021-07-01
  • 1970-01-01
  • 2013-12-15
  • 2015-03-11
  • 1970-01-01
相关资源
最近更新 更多