Oplossing in r: aggregatiefunctie ontbreekt, standaard ingesteld op "lengte"
Een fout die u kunt tegenkomen bij het gebruik van R is:
Aggregation function missing: defaulting to length
Deze fout treedt op wanneer u de dcast- functie in het reshape2- pakket gebruikt om een dataframe van een lang formaat naar een breed formaat te converteren, maar er kunnen meerdere waarden in de afzonderlijke cellen van het brede dataframe worden geplaatst.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we het volgende dataframe in R hebben dat informatie bevat over de verkoop van verschillende producten:
#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
Stel nu dat we de dcast- functie proberen te gebruiken om het dataframe van lang formaat naar breed formaat te converteren:
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
Merk op dat de dcast-functie werkt, maar we ontvangen het waarschuwingsbericht Aggregate Function Missing .
Hoe u de fout kunt oplossen
De reden dat we een waarschuwingsbericht ontvangen, is omdat er voor elke combinatie van winkel en product twee potentiële waarden zijn die we voor de verkoop kunnen gebruiken.
Voor winkel A en product 1 kan de verkoopwaarde bijvoorbeeld 12 of 29 zijn.
De dcast- functie is dus standaard ingesteld op „lengte“ als aggregatiefunctie.
De grote database vertelt ons bijvoorbeeld dat er voor winkel A en product 1 in totaal 2 verkoopwaarden zijn.
Als u in plaats daarvan een andere aggregatiefunctie wilt gebruiken, kunt u fun.aggregate gebruiken.
We kunnen bijvoorbeeld de volgende syntaxis gebruiken om de som van de verkopen per winkel en product te berekenen:
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
Zo interpreteert u de waarden in het grote dataframe:
- De som van de verkopen van winkel A en product 1 is 41 .
- De som van de omzet van winkel A en product 2 is 38 .
- De som van de omzet van winkel B en product 1 is 45 .
- De som van de verkopen van winkel B en product 2 is 33 .
Houd er rekening mee dat we deze keer geen waarschuwingsberichten krijgen omdat we het argument fun.aggregate hebben gebruikt.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:
Hoe op te lossen in R: onverwachte tekenreeksconstante
Oplossing in R: ongeldige sjabloonformule in ExtractVars
Hoe op te lossen in R: argument is noch numeriek noch logisch: return na