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)
3 Réponses :
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))
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), ",")))
Vous pouvez également utiliser scan()
unique(scan(text=data$observer, what="", sep=",")) # Read 14 items # [1] "A" "B" "E" "D" "C" "F"
Vous devez
désélectionneravant de faireunique. Essayezunique (unlist (strsplit (...)))@Gregor Ajouter comme réponse?