2
votes

dans R: trouver toutes les valeurs uniques dans la colonne séparées par une virgule

J'ai plusieurs observations d'une espèce avec différents observateurs / groupes d'observateurs et je souhaite créer une liste de tous les observateurs uniques. Mes données ressemblent à ceci:

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"

Ma sortie doit renvoyer une liste de tous les observateurs uniques - donc:

A,B,C,E,F

J'ai essayé de sous-chaîne le données dans la colonne C en utilisant la commande suivante mais qui ne renvoie que les combinaisons uniques d'observateurs.

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)


2 commentaires

Vous devez désélectionner avant de faire unique . Essayez unique (unlist (strsplit (...)))


@Gregor Ajouter comme réponse?


3 Réponses :


1
votes

Nous pouvons utiliser lignes_séparées sur 'observer', obtenir les lignes distinctes , regroupées par 'espèce', et coller l'observateur '

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


0 commentaires

1
votes

Vous y êtes presque, il vous suffit de désélectionner avant de faire l 'unique:

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


0 commentaires

1
votes

Vous pouvez également utiliser scan()

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


0 commentaires