Come risolvere il problema in r: funzione aggregata mancante, il valore predefinito è "lunghezza"


Un errore che potresti riscontrare quando usi R è:

 Aggregation function missing: defaulting to length

Questo errore si verifica quando si utilizza la funzione dcast nel pacchetto reshape2 per convertire un frame di dati da un formato lungo a un formato wide , ma è possibile inserire più valori nelle singole celle del frame di dati wide.

L’esempio seguente mostra come correggere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di avere il seguente frame di dati in R che contiene informazioni sulle vendite di vari prodotti:

 #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 AY 1 12
2 AY 2 18
3 YEAR 1 29
4 YEAR 2 20
5 BY 1 30
6 BY 2 11
7 BN 1 15
8 BN 2 22

Supponiamo ora di provare a utilizzare la funzione dcast per convertire il frame di dati dal formato lungo al formato largo:

 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 to 2 2
2 B 2 2

Tieni presente che la funzione dcast funziona ma riceviamo il messaggio di avviso Funzione aggregata mancante .

Come correggere l’errore

Il motivo per cui riceviamo un messaggio di avviso è perché per ogni combinazione di negozio e prodotto esistono due valori potenziali che potremmo utilizzare per le vendite .

Ad esempio, per il negozio A e il prodotto 1, il valore delle vendite potrebbe essere 12 o 29.

Pertanto la funzione dcast utilizza per impostazione predefinita “lunghezza” come funzione di aggregazione.

Ad esempio, il database di grandi dimensioni ci dice che per il negozio A e il prodotto 1 ci sono un totale di 2 valori di vendita.

Se invece desideri utilizzare una funzione di aggregazione diversa, puoi utilizzare fun.aggregate .

Ad esempio, possiamo utilizzare la seguente sintassi per calcolare la somma delle vendite per negozio e prodotto :

 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

Ecco come interpretare i valori nel frame di dati di grandi dimensioni:

  • La somma delle vendite del negozio A e del prodotto 1 è 41 .
  • La somma delle vendite del negozio A e del prodotto 2 è 38 .
  • La somma delle vendite del negozio B e del prodotto 1 è 45 .
  • La somma delle vendite del negozio B e del prodotto 2 è 33 .

Tieni presente che questa volta non riceviamo alcun messaggio di avviso perché abbiamo utilizzato l’argomento fun.aggregate .

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in R:

Come risolvere in R: costante di stringa inaspettata
Come risolvere il problema in R: formula modello non valida in ExtractVars
Come risolvere in R: l’argomento non è né numerico né logico: return na

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *