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

Ajouter un commentaire

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