J'ai un champ catégoriel et je souhaite créer un sous-ensemble en "excluant" plusieurs valeurs.
Au départ, j'avais supposé que je pourrais simplement lister toutes les valeurs que je veux directement dans le code, ou créer une liste séparée et l'ajouter à nouveau dans le code (voir ci-dessous).
Exclude_Prod = c("x1", "x2", "x3) subset(data, data$variable != Exclude_Prod)
ou
subset(data, data$variable != c("x1", "x2", "x3"))
J'ai plusieurs valeurs dans un seul champ, qui est une variable catégorielle.
Je souhaite exclure ces multiples valeurs, puis sous-ensemble les données. La raison pour laquelle je souhaite exclure est qu'il y a moins de valeurs que celles que je souhaite conserver.
3 Réponses :
Essayez ceci: remplacez par des variables pertinentes. data3 est l'ensemble de données.
mtcars %>% mutate(ID=row.names(.)) %>% select(ID) %>% filter(!ID%in%c("Volvo 142E","Toyota Corona"))#eg Variable%in%c("x1", "x2", "x3)
En utilisant de fausses données:
Avec base
R
Sales Exclude_Prod 1 13 x3
Le "désavantage" est que la base R préserve l'indexation d'origine.
Avec dplyr
data3<-data.frame(Sales=c(11,12,13),Exclude_Prod = c("x1", "x2", "x3")) data3 %>% filter(!Exclude_Prod%in%c("x1","x2"))
Résultat :
data3[!data3$Exclude_Prod%in%c("x1","x2"),]
Réponse originale:
library(dplyr)
Merci, Nelson. Après une recherche approfondie, une aide et des essais et erreurs, j'ai utilisé tidyverse
:
data2 <- data1 %>% filter(variable != "x1" & variable != "x2")
une méthode data.table
:
require(data.table) setDT(data)[! variable %in% c("x1", "x2", "x3"), ]
Veuillez noter que nommer un bloc de données "data" est une mauvaise idée, car il existe une fonction appelée data
dans le package utils
.