【发布时间】: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=", ")). -
行得通!完美的!非常感谢。