So beheben sie das problem in r: aggregatfunktion fehlt, standardmäßig ist „länge“


Ein Fehler, der bei der Verwendung von R auftreten kann, ist:

 Aggregation function missing: defaulting to length

Dieser Fehler tritt auf, wenn Sie die dcast- Funktion im reshape2- Paket verwenden, um einen Datenrahmen von einem langen Format in ein breites Format zu konvertieren, in den einzelnen Zellen des breiten Datenrahmens jedoch mehrere Werte platziert werden können.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Datenrahmen in R, der Informationen über den Verkauf verschiedener Produkte enthält:

 #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

Nehmen wir nun an, wir versuchen, die dcast- Funktion zu verwenden, um den Datenrahmen vom Langformat in das Breitformat zu konvertieren:

 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

Beachten Sie, dass die dcast-Funktion funktioniert, wir jedoch die Warnmeldung „Aggregate Function Missing“ erhalten.

So beheben Sie den Fehler

Der Grund, warum wir eine Warnmeldung erhalten, liegt darin, dass es für jede Kombination aus Geschäft und Produkt zwei potenzielle Werte gibt, die wir für Verkäufe verwenden könnten.

Für Geschäft A und Produkt 1 könnte der Verkaufswert beispielsweise 12 oder 29 betragen.

Daher verwendet die dcast -Funktion standardmäßig „length“ als Aggregationsfunktion.

Die große Datenbank sagt uns beispielsweise, dass es für Geschäft A und Produkt 1 insgesamt 2 Verkaufswerte gibt.

Wenn Sie stattdessen eine andere Aggregationsfunktion verwenden möchten, können Sie fun.aggregate verwenden.

Beispielsweise können wir die folgende Syntax verwenden, um die Summe der Verkäufe nach Geschäft und Produkt zu berechnen:

 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

So interpretieren Sie die Werte im großen Datenrahmen:

  • Die Summe der Verkäufe von Geschäft A und Produkt 1 beträgt 41 .
  • Die Summe der Verkäufe von Geschäft A und Produkt 2 beträgt 38 .
  • Die Summe der Verkäufe von Geschäft B und Produkt 1 beträgt 45 .
  • Die Summe der Verkäufe von Geschäft B und Produkt 2 beträgt 33 .

Beachten Sie, dass wir dieses Mal keine Warnmeldungen erhalten, da wir das Argument fun.aggregate verwendet haben.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in R beheben können:

So beheben Sie in R: unerwartete Zeichenfolgenkonstante
So beheben Sie in R: Ungültige Vorlagenformel in ExtractVars
So beheben Sie das Problem in R: Das Argument ist weder numerisch noch logisch: Geben Sie na zurück

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert