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

Ajouter un commentaire

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