Comment filtrer les données d’un data frame dans R ?

Pour extraire des données d’un data frame à partir de règles conditionnelles, la methode la plus simple est d’appliquer un filtre (l’autre méthode avec which est décrite ici).

Il est possible d’appliquer un filtre en faisant reference aux index du dataframe et en appliquant une regle conditionnelles sur les lignes. Exemple avec le dataframe ci-dessous :

data <- data.frame( fonctionnalite = c("a","b","c","a","b","c"), note=c(0,1,2,3,4,5))

Pour n’avoir que les données où fonctionnalité = a, il s’agit de mettre la règle conditionnelle à la position de l’index des lignes (ca renverra TRUE pour les lignes où la condition correspond et ces lignes seront conservées). Pour l’index des colonnes, on laisse vide pour voir toutes les colonnes :

data[ data["fonctionnalite"] == "a", ]

Cette manière de faire peut se décliner avec les index purs :

data[ data[,1] == "a", ]

Il est possible de mettre plusieurs conditions :

# 2 conditions avec AND
data[ data["note"] > 2 & data["note"] < 5, ]
# 2 conditions avec AND combinées à une condition OU
data[ (data["note"] > 2 & data["note"] < 5) | data["fonctionnalite"] == "a", ]

La librairie dplyr pour la manipulation de données permet de faire la même chose avec la fonction filter() :

library(dplyr)
data %>% filter( (note>2 & note<5)|fonctionnalite=="a" )

Cette librairie permet de ne pas avoir à passer par les index. Et surtout elle permet de facilement faire appel à des noms de colonnes de manière dynamique (en le récupérant dans une autre variable) :

col <- c("note","fonctionnalite")
library(dplyr)
data %>% filter( (.data[[col[1]]] > 2 & .data[[col[1]]] < 5) | .data[[col[2]]] =="a" )

Pour + d’infos :

https://dplyr.tidyverse.org/reference/filter.html

0.00 avg. rating (0% score) - 0 votes

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *