Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment réparer dans R : fonction d’agrégation manquante, par défaut « longueur »



Une erreur que vous pouvez rencontrer lors de l’utilisation de R est :

Aggregation function missing: defaulting to length

Cette erreur se produit lorsque vous utilisez la fonction dcast du package reshape2 pour convertir un bloc de données d’un format long à un format large , mais que plusieurs valeurs peuvent être placées dans les cellules individuelles du bloc de données large.

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

Comment reproduire l’erreur

Supposons que nous ayons le bloc de données suivant dans R qui contient des informations sur les ventes de divers produits :

#create data frame
df <- data.frame(store=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 promotion=c('Y', 'Y', 'N', 'N', 'Y', 'Y', 'N', 'N'),
                 product=c(1, 2, 1, 2, 1, 2, 1, 2),
                 sales=c(12, 18, 29, 20, 30, 11, 15, 22))

#view data frame
df

  store promotion product sales
1     A         Y       1    12
2     A         Y       2    18
3     A         N       1    29
4     A         N       2    20
5     B         Y       1    30
6     B         Y       2    11
7     B         N       1    15
8     B         N       2    22

Supposons maintenant que nous essayions d’utiliser la fonction dcast pour convertir la trame de données d’un format long à un format large :

library(reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value.var="sales")

#view result
df_wide

Aggregation function missing: defaulting to length
  store 1 2
1     A 2 2
2     B 2 2

Notez que la fonction dcast fonctionne mais nous recevons le message d’avertissement de Fonction d’agrégation manquante .

Comment réparer l’erreur

La raison pour laquelle nous recevons un message d’avertissement est que pour chaque combinaison de magasin et de produit , il existe deux valeurs potentielles que nous pourrions utiliser pour les ventes .

Par exemple, pour le magasin A et le produit 1, la valeur des ventes pourrait être de 12 ou 29.

Ainsi, la fonction dcast utilise par défaut « longueur » comme fonction d’agrégation.

Par exemple, la base de données large nous indique que pour le magasin A et le produit 1, il existe un total de 2 valeurs de ventes.

Si vous souhaitez plutôt utiliser une fonction d’agrégation différente, vous pouvez utiliser fun.aggregate .

Par exemple, nous pouvons utiliser la syntaxe suivante pour calculer la somme des ventes par magasin et par produit :

library(reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value.var="sales", fun.aggregate=sum)

#view result
df_wide

  store  1  2
1     A 41 38
2     B 45 33

Voici comment interpréter les valeurs dans le large bloc de données :

  • La somme des ventes du magasin A et du produit 1 est de 41 .
  • La somme des ventes du magasin A et du produit 2 est de 38 .
  • La somme des ventes du magasin B et du produit 1 est de 45 .
  • La somme des ventes du magasin B et du produit 2 est de 33 .

Notez que nous ne recevons aucun message d’avertissement cette fois car nous avons utilisé l’argument fun.aggregate .

Ressources additionnelles

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

Comment réparer dans R : constante de chaîne inattendue
Comment réparer dans R : formule de modèle invalide dans ExtractVars
Comment réparer dans R : l’argument n’est ni numérique ni logique : renvoyer na

Ajouter un commentaire

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