R : Comment vérifier si plusieurs colonnes sont égales
Vous pouvez utiliser les méthodes suivantes pour vérifier si plusieurs colonnes sont égales dans un bloc de données dans R :
Méthode 1 : vérifier si toutes les colonnes sont égales
library(dplyr) #create new column that checks if all columns are equal df <- df %>% rowwise %>% mutate(match = n_distinct(unlist(cur_data())) == 1) %>% ungroup()
Méthode 2 : vérifier si des colonnes spécifiques sont égales
library(dplyr) #create new column that checks if columns 'A', 'C', and 'D' are equal df_temp <- df %>% select('A', 'C', 'D') %>% rowwise %>% mutate(match = n_distinct(unlist(cur_data())) == 1) %>% ungroup() #add new column to existing data frame df$match <- df_temp$match
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le bloc de données suivant :
#create data frame df = data.frame(A=c(4, 0, 3, 3, 6, 8, 7), B=c(4, 2, 3, 5, 6, 4, 7), C=c(4, 0, 3, 3, 5, 10, 7), D=c(4, 0, 3, 3, 3, 8, 7)) #view data frame df A B C D 1 4 4 4 4 2 0 2 0 0 3 3 3 3 3 4 3 5 3 3 5 6 6 5 3 6 8 4 10 8 7 7 7 7 7
Exemple 1 : Vérifiez si toutes les colonnes sont égales
Nous pouvons utiliser la syntaxe suivante pour vérifier si la valeur de chaque colonne du bloc de données est égale pour chaque ligne :
library(dplyr) #create new column that checks if all columns are equal df <- df %>% rowwise %>% mutate(match = n_distinct(unlist(cur_data())) == 1) %>% ungroup() #view updated data frame df # A tibble: 7 x 5 A B C D match 1 4 4 4 4 TRUE 2 0 2 0 0 FALSE 3 3 3 3 3 TRUE 4 3 5 3 3 FALSE 5 6 6 5 3 FALSE 6 8 4 10 8 FALSE 7 7 7 7 7 TRUE
Si la valeur de chaque colonne est égale, la colonne de correspondance renvoie True .
Sinon, il renvoie False .
Notez que vous pouvez convertir les valeurs True et False en 1 et 0 en utilisant as.numeric() comme suit :
library(dplyr) #create new column that checks if all columns are equal df <- df %>% rowwise %>% mutate(match = as.numeric(n_distinct(unlist(cur_data())) == 1)) %>% ungroup() #view updated data frame df # A tibble: 7 x 5 A B C D match 1 4 4 4 4 1 2 0 2 0 0 0 3 3 3 3 3 1 4 3 5 3 3 0 5 6 6 5 3 0 6 8 4 10 8 0 7 7 7 7 7 1
Exemple 2 : Vérifiez si des colonnes spécifiques sont égales
Nous pouvons utiliser la syntaxe suivante pour vérifier si les valeurs des colonnes A, C et D du bloc de données sont égales pour chaque ligne :
library(dplyr) #create new column that checks if columns 'A', 'C', and 'D' are equal df_temp <- df %>% select('A', 'C', 'D') %>% rowwise %>% mutate(match = n_distinct(unlist(cur_data())) == 1) %>% ungroup() #add new column to existing data frame df$match <- df_temp$match #view updated data frame df A B C D match 1 4 4 4 4 TRUE 2 0 2 0 0 TRUE 3 3 3 3 3 TRUE 4 3 5 3 3 TRUE 5 6 6 5 3 FALSE 6 8 4 10 8 FALSE 7 7 7 7 7 TRUE
Si les valeurs des colonnes A, C et D sont égales, la colonne de correspondance renvoie True .
Sinon, il renvoie False .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment trier par plusieurs colonnes dans R
Comment conserver certaines colonnes dans R
Comment compter le nombre d’occurrences dans les colonnes de R