我有一个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()))?
非常感谢!
答案 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 = ", "))