Une condition est une expression logique dont le résultat est soit TRUE (vrai) soit FALSE (faux).

Une condition comprend la plupart du temps un opérateur de comparaison. Les plus courants sont les suivants :

Opérateur de comparaison Signification
== égal à
!= différent de
> strictement supérieur à
< strictement inférieur à
>= supérieur ou égal à
<= inférieur ou égal à

Voyons tout de suite un exemple :

library(questionr)
data(hdv2003)
d <- hdv2003
str(d$sexe == "Homme")
 logi [1:2000] FALSE FALSE TRUE TRUE FALSE FALSE ...

Que s’est-il passé ? Nous avons fourni à R une condition qui signifie « la valeur de la variable sexe vaut “Homme” ». Et il nous a renvoyé un vecteur avec autant d’éléments qu’il y’a d’observations dans d, et dont la valeur est TRUE si l’observation correspond à un homme et FALSE dans les autres cas.

Prenons un autre exemple. On n’affichera cette fois que les premiers éléments de notre variable d’intérêt à l’aide de la fonction head :

head(d$age)
[1] 28 23 59 34 71 35
head(d$age > 40)
[1] FALSE FALSE  TRUE FALSE  TRUE FALSE

On voit bien ici qu’à chaque élément du vecteur d$age dont la valeur est supérieure à 40 correspond un élément TRUE dans le résultat de la condition.

On peut combiner ou modifier des conditions à l’aide des opérateurs logiques habituels :

Opérateur logique Signification
& et logique
| ou logique
! négation logique

Comment les utilise-t-on ? Voyons tout de suite des exemples. Supposons que je veuille déterminer quels sont dans mon échantillon les hommes ouvriers spécialisés :

d$sexe == "Homme" & d$qualif == "Ouvrier specialise"

Si je souhaite identifier les personnes qui bricolent ou qui font la cuisine :

d$bricol == "Oui" | d$cuisine == "Oui"

Si je souhaite isoler les femmes qui ont entre 20 et 34 ans :

d$sexe == "Femme" & d$age >= 20 & d$age <= 34

Si je souhaite récupérer les enquêtés qui ne sont pas cadres, on peut utiliser l’une des deux formes suivantes :

d$qualif != "Cadre"
!(d$qualif == "Cadre")

Lorsqu’on mélange « et » et « ou » il est nécessaire d’utiliser des parenthèses pour différencier les blocs. La condition suivante identifie les femmes qui sont soit cadre, soit employée :

d$sexe == "Femme" & (d$qualif == "Employe" | d$qualif == "Cadre")

L’opérateur %in% peut être très utile : il teste si une valeur fait partie des éléments d’un vecteur. Ainsi on pourrait remplacer la condition précédente par :

d$sexe == "Femme" & d$qualif %in% c("Employe", "Cadre")

Enfin, signalons qu’on peut utiliser les fonctions table ou summary pour avoir une idée du résultat de notre condition :

table(d$sexe)

Homme Femme 
  899  1101 
table(d$sexe == "Homme")

FALSE  TRUE 
 1101   899 
summary(d$sexe == "Homme")
   Mode   FALSE    TRUE 
logical    1101     899