Sélectionner des sous-ensembles de jeux de données avec la fonction subset

Si l’on veut sélectionner un sous-ensemble d’un jeu de données à partir d’une condition simple étendue, d’une condition multiple exclusive, d’une condition multiple inclusive, d’une condition multiple exclusive étendue, ou d’une condition multiple inclusive étendue, il faut utiliser les opérateurs logiques OU et/ou ET.
Dans R, le ET s’écrit « & », et le OU s’écrit « | ».

Une condition simple porte sur une seule colonne.
Une condition multiple porte sur plusieurs colonnes à la fois (comme pour les régressions).
Une condition étendue porte sur l’union de plusieurs modalités/critères au sein d’une même colonne : elle utilise l’opérateur logique OU.
Une condition exclusive est une condition multiple qui porte sur l’intersection de sous-ensembles : elle utiilise l’opérateur logique ET.
Une condition inclusive est une condition multiple qui porte sur l’union de sous-ensembles : elle utilise l’opérateur logique OU.
Une condition simple ne peut, par nature, ni être exclusive, ni être inclusive.

Pour une sélection simple étendue, on utilisera l’opérateur logique OU.
Pour une sélection multiple exclusive, on utilisera l’opérateur logique ET.
Pour une sélection multiple inclusive, on utilisera l’opérateur logique OU.
Pour une sélection multiple exclusive étendue, on utilisera les opérateurs logiques OU et ET.
Pour une sélection multiple inclusive étendue, on utilisera l’opérateur logique OU.



data(iris)
head(Iris)
summary(iris)

### Exemple de sélection simple étendue sur une variable qualitative ###
# Il existe dans ce jeu de données 3 espèces : setosa, versicolor et virginica.
# On veut sélectionner le sous-ensemble concernant les espèces setosa OU versicolor.
iris2 = subset(iris, Species == "setosa" | Species == "versicolor") # on peut soit passer par la fonction 'subset'
iris2 = iris[iris$Species == "setosa" | iris$Species == "versicolor",] # ou soit passer par les conditions entre crochets
iris2

# En revanche, on ne peut pas utiliser cette syntaxe :
iris2 = subset(iris, Species == c("setosa","versicolor"))
# Ni celle-ci :
iris2 = iris[iris$Species == c("setosa","versicolor")]
# Car je ne sais pas pourquoi, mais ces syntaxes ne sélectionnent qu'une partie du sous-ensemble désiré. Cette partie a un nombre de lignes égal au nombre de lignes qui auraient été sélectionnées par une condition portant sur une seule modalité.
dim(iris2) # On a 50 lignes, alors qu'on devrait en avoir 100 !


### Exemple de sélection simple étendue sur une variable quantitative ###
# On veut sélectionner les fleurs dont la longueur du pétale est inférieure à 1,5 cm OU supérieure à 5 cm.
iris3 = subset(iris, Petal.Length <= 1.5 | Petal.Length >= 5)
iris3 = iris[iris$Petal.Length <= 1.5 | iris$Petal.Length >= 5,]
iris3


### Exemple de sélection multiple exclusive ###
# On veut sélectionner les fleurs de l'espèce setosa ET dont la longueur du pétale est inférieure à 1,5 cm.
iris4 = subset(iris, Species == "setosa" & Petal.Length <= 1.5)
iris4 = iris[iris$Species == "setosa" & iris$Petal.Length <= 1.5,]
iris4


### Exemple de sélection multiple inclusive ###
# On veut sélectionner les fleurs de l'espèce setosa OU celles dont la longueur du pétale est supérieure à 5 cm.
iris5 = subset(iris, Species == "setosa" | Petal.Length >= 5)
iris5 = iris[iris$Species == "setosa" | iris$Petal.Length >= 5,]
iris5


### Exemple de sélection multiple exclusive étendue ###
# On veut sélectionner les fleurs de l'espèce versicolor OU virginica ET dont la longueur du pétale est supérieure à 5 cm.
# Attentions, il faut alors utiliser des parenthèses !
iris6 = subset(iris, (Species == "versicolor" | Species == "virginica") & Petal.Length >= 5)
iris6 = iris[(iris$Species == "versicolor" | iris$Species == "virginica") & iris$Petal.Length >= 5,]
iris6


### Exemple de sélection multiple inclusive étendue ###
# On veut sélectionner les fleurs de l'espèce versicolor OU virginica OU celles dont la longueur du pétale est inférieure à 1,5 cm.
# Pas forcément besoin de parenthèses ici.
iris7 = subset(iris, Species == "versicolor" | Species == "virginica" | Petal.Length <= 1.5)
iris7 = iris[iris$Species == "versicolor" | iris$Species == "virginica" | iris$Petal.Length <= 1.5,]
iris7