Comment sélectionner des colonnes qui ne commencent pas par une chaîne dans dplyr
Vous pouvez utiliser les fonctions suivantes du package dplyr dans R pour sélectionner les colonnes qui ne commencent pas par une chaîne spécifique :
Méthode 1 : sélectionner les colonnes qui ne commencent pas par une chaîne spécifique
df %>%
select(-starts_with("string1"))
Méthode 2 : sélectionner les colonnes qui ne commencent pas par l’une des plusieurs chaînes
df %>% select(-starts_with(c("string1", "string2", "string3")))
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(store1_sales=c(12, 10, 14, 19, 22, 25, 29), store1_returns=c(3, 3, 2, 4, 3, 2, 1), store2_sales=c(8, 8, 12, 14, 15, 13, 12), store2_returns=c(1, 2, 2, 1, 2, 1, 3), promotions=c(0, 1, 1, 1, 0, 0, 1)) #view data frame df store1_sales store1_returns store2_sales store2_returns promotions 1 12 3 8 1 0 2 10 3 8 2 1 3 14 2 12 2 1 4 19 4 14 1 1 5 22 3 15 2 0 6 25 2 13 1 0 7 29 1 12 3 1
Exemple 1 : sélectionner des colonnes qui ne commencent pas par une chaîne spécifique
Le code suivant montre comment utiliser la fonction -starts_with() pour sélectionner uniquement les colonnes qui ne commencent pas par « store1 » dans le bloc de données :
library(dplyr)
#select all columns that do not start with "store1"
df %>%
select(-starts_with("store1"))
store2_sales store2_returns promotions
1 8 1 0
2 8 2 1
3 12 2 1
4 14 1 1
5 15 2 0
6 13 1 0
7 12 3 1
Notez que les deux colonnes commençant par « store1 » ne sont pas renvoyées.
Exemple 2 : sélectionner des colonnes qui ne commencent pas par une chaîne parmi plusieurs
Le code suivant montre comment utiliser la fonction -starts_with() pour sélectionner uniquement les colonnes qui ne commencent pas par « store1 » ou « prom » dans le bloc de données :
library(dplyr)
#select all columns that do not start with "store1" or "prom"
df %>%
select(-starts_with(c("store1", "prom")))
store2_sales store2_returns
1 8 1
2 8 2
3 12 2
4 14 1
5 15 2
6 13 1
7 12 3
Notez que les colonnes commençant par « store1 » ou « prom » ne sont pas renvoyées.
Remarque : Par défaut, la fonction start_with() n’est pas sensible à la casse. Pour rendre la fonction sensible à la casse, utilisez l’argument ignore.case=FALSE dans la fonction.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes à l’aide de dplyr :
Comment sélectionner des colonnes par nom à l’aide de dplyr
Comment sélectionner des colonnes par index à l’aide de dplyr
Comment utiliser select_if avec plusieurs conditions dans dplyr