Comment réparer dans R : erreur : identifiants en double pour les lignes



Une erreur que vous pouvez rencontrer dans R est :

Error: Duplicate identifiers for rows

Cette erreur se produit lorsque vous tentez d’utiliser la fonction spread() pour répartir les valeurs d’une ou plusieurs colonnes d’un bloc de données dans leurs propres colonnes.

Cependant, une erreur peut se produire s’il n’y a pas d’ID unique pour chaque ligne, il n’y a donc aucun moyen de déterminer quelles valeurs appartiennent à quelles observations lors de l’exécution de la répartition.

L’exemple suivant montre comment corriger cette erreur dans la pratique.

Exemple : Comment corriger l’erreur

Supposons que nous ayons le bloc de données suivant dans R qui contient des informations sur divers joueurs de basket-ball :

#create data frame
df <- data.frame(player=rep(c('A', 'B'), each=4),
                 year=rep(1:4, times=2),
                 assists=c(4, 10, 4, 4, 3, 7, 7, 6),
                 points=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

  player year assists points
1      A    1       4     14
2      A    2      10      6
3      A    3       4     18
4      A    4       4      7
5      B    1       3     22
6      B    2       7      9
7      B    3       7     38
8      B    4       6      4

Supposons maintenant que nous souhaitions transformer le bloc de données afin d’avoir la colonne année comme colonne id et créer de nouvelles colonnes appelées assists_A , assists_B , points_A et points_B pour représenter les passes décisives et les valeurs de points des joueurs A et B au cours de chaque année.

Puisque les valeurs de la colonne année ne seront pas uniques (il y aura deux 1, deux 2, etc.), la fonction spread() produira une erreur.

Cependant, nous pouvons utiliser la fonction pivot_wider() avec la syntaxe suivante pour produire la trame de données souhaitée :

library(tidyr)

#spread the values in the points and assists columns
pivot_wider(data = df, 
            id_cols = year, 
            names_from = player, 
            values_from = c('assists', 'points'))

# A tibble: 4 x 5
   year assists_A assists_B points_A points_B
                    
1     1         4         3       14       22
2     2        10         7        6        9
3     3         4         7       18       38
4     4         4         6        7        4

Notez que nous ne recevons aucune erreur et que nous sommes en mesure de créer avec succès les nouvelles colonnes qui affichent les valeurs de points et de passes décisives pour les joueurs A et B au cours de chacune des quatre années.

Ressources additionnelles

Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes dans R :

Comment réparer dans R : les NA introduits par la coercition
Comment réparer dans R : indice hors limites
Comment réparer dans R : la longueur d’un objet plus longue n’est pas un multiple de la longueur d’un objet plus courte
Comment réparer dans R : le nombre d’éléments à remplacer n’est pas un multiple de la longueur de remplacement

Ajouter un commentaire

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