Comment sous-ensembler une trame de données par liste de valeurs dans R
Vous pouvez utiliser l’une des méthodes suivantes pour sous-définir un bloc de données par une liste de valeurs dans R :
Méthode 1 : utiliser Base R
df_new <- df[df$my_column %in% vals,]
Méthode 2 : utiliser dplyr
library(dplyr)
df_new <- filter(df, my_column %in% vals)
Méthode 3 : utiliser data.table
library(data.table)
df_new <- setDT(df, key='my_column')[J(vals)]
Les exemples suivants montrent comment utiliser chacune de ces méthodes en pratique avec le bloc de données suivant dans R :
#create data frame
df <- data.frame(team=c('A', 'B', 'B', 'B', 'C', 'C', 'C', 'D'),
points=c(12, 22, 35, 34, 20, 28, 30, 18),
assists=c(4, 10, 11, 12, 12, 8, 6, 10))
#view data frame
df
team points assists
1 A 12 4
2 B 22 10
3 B 35 11
4 B 34 12
5 C 20 12
6 C 28 8
7 C 30 6
8 D 18 10
Méthode 1 : sous-ensemble de trame de données par liste de valeurs en base R
Le code suivant montre comment sous-ensembler le bloc de données pour qu’il contienne uniquement les lignes ayant une valeur « A » ou « C » dans la colonne d’équipe :
#define values to subset by vals <- c('A', 'C') #subset data frame to only contain rows where team is 'A' or 'C' df_new <- df[df$team %in% vals,] #view results df_new team points assists 1 A 12 4 5 C 20 12 6 C 28 8 7 C 30 6
Le bloc de données résultant contient uniquement les lignes qui ont une valeur « A » ou « C » dans la colonne d’équipe .
Notez que nous avons utilisé des fonctions de base R dans cet exemple, nous n’avons donc pas eu à charger de packages supplémentaires.
Méthode 2 : sous-ensemble de trame de données par liste de valeurs dans dplyr
Le code suivant montre comment sous-ensembler le bloc de données pour qu’il contienne uniquement les lignes ayant une valeur de « A » ou « C » dans la colonne d’équipe à l’aide de la fonction filter() du package dplyr :
library(dplyr) #define values to subset by vals <- c('A', 'C') #subset data frame to only contain rows where team is 'A' or 'C' df_new <- filter(df, team %in% vals) #view results df_new team points assists 1 A 12 4 5 C 20 12 6 C 28 8 7 C 30 6
Le bloc de données résultant contient uniquement les lignes qui ont une valeur « A » ou « C » dans la colonne d’équipe .
Méthode 3 : sous-ensemble de la trame de données par liste de valeurs dans data.table
Le code suivant montre comment sous-ensembler le bloc de données pour qu’il contienne uniquement les lignes ayant une valeur « A » ou « C » dans la colonne d’équipe à l’aide des fonctions du package data.table :
library(data.table) #define values to subset by vals <- c('A', 'C') #subset data frame to only contain rows where team is 'A' or 'C' df_new <- setDT(df, key='team')[J(vals)] #view results df_new team points assists 1: A 12 4 2: C 20 12 3: C 28 8 4: C 30 6
Le bloc de données résultant contient uniquement les lignes qui ont une valeur « A » ou « C » dans la colonne d’équipe .
Connexe : Comment utiliser l’opérateur %in% dans R (avec exemples)
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment sous-ensembler une trame de données par niveaux de facteurs dans R
Comment sous-définir par une plage de dates dans R
Comment tracer un sous-ensemble d’un bloc de données dans R