1
votes

Besoin de sous-ensemble en excluant plusieurs valeurs dans une variable catégorielle

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.


0 commentaires

3 Réponses :


3
votes

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)


0 commentaires

0
votes

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")


0 commentaires

0
votes

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 .


0 commentaires