在以逗号分隔的列中查找所有唯一值
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"
我有不同观察者/观察者组对一个物种的多次观察,我想创建一个包含所有独特观察者的列表。我的数据如下所示:
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"