在以逗号分隔的列中查找所有唯一值

Find all unique values in column separated by comma

我有不同观察者/观察者组对一个物种的多次观察,我想创建一个包含所有独特观察者的列表。我的数据如下所示:

data <- read.table(text="species observer
1 A,B
1 A,B
1 B,E
1 B,E
1 D,E,A,C,C
1 F"               , header = TRUE, stringsAsFactors = FALSE)

我的输出应该 return 所有唯一观察者的列表 - 所以:

A,B,C,E,F

我尝试使用以下命令对 C 列中的数据进行子字符串化,但只有 return 观察者的独特组合。

all_observers <- unique(strsplit(as.character(data$observer), ","))

all_observers
[[1]]
[1] "A" "B"

[[2]]
[1] "B" "E"

[[3]]
[1] "D" "E" "A" "C" "C"

[[4]]
[1] "F"

我们可以在 'observer' 上使用 separate_rows,得到 distinct 行,按 'species' 分组,paste 'observer'

library(tidyverse)
data %>% 
   separate_rows(observer) %>% 
   distinct %>% 
   group_by(species) %>% 
   summarise(observer = toString(observer))

你快到了,你只需要 unlist 然后再做 unique:

all_observers <- unique(unlist(strsplit(as.character(data$observer), ",")))

您也可以使用 scan()

unique(scan(text=data$observer, what="", sep=","))
# Read 14 items
# [1] "A" "B" "E" "D" "C" "F"