Frage

Ich habe einen Datensatz und möchte ihn mit dem Paket reshape2 von R umformen, erhalte jedoch diese Fehlermeldung:

Aggregation function missing: defaulting to length

Das ist der head() meiner Daten:

cat_one customer valor
cama        A     1
cama        B     1
cama        C     1
mesa        D     1
mesa        A     1
mesa        A     1

Und ich möchte es so umgestalten, mit einer Zählung zwischen beiden Variablen:

customer     cama    mesa
A             1       0
B             2      ...
C
D            ...     ...

Das ist mein Code:

dcast(dados_teste, cat_one ~ customer, value.var = 'valor')

Und ich folge diesem anderen Frage, aber die gleiche Lösung funktioniert bei mir nicht.

War es hilfreich?

Lösung

Sie haben die linke und rechte Seite der Formel verwechselt.

Versuchen:

library(reshape2)
dcast(dados_teste, customer ~ cat_one, value.var = "valor")
# Aggregation function missing: defaulting to length
#   customer cama mesa
# 1        A    1    2
# 2        B    1    0
# 3        C    1    0
# 4        D    0    1

Der „Fehler“, auf den Sie sich beziehen, ist eigentlich nur ein warning Das sagt Ihnen, dass nur die Anzahl der Werte gezählt wird und keine andere Funktion angewendet wird.In diesem Fall ist es also vollkommen akzeptabel.

Wenn Sie es loswerden möchten, geben Sie an fun.aggregate = length.

dcast(dados_teste, customer ~ cat_one, 
      value.var = "valor", fun.aggregate = length)

Wenn Sie nur zwei Spalten zählen möchten, können Sie auch einen Blick darauf werfen table:

as.data.frame.matrix(table(dados_teste[c(2, 1)]))
#   cama mesa
# A    1    2
# B    1    0
# C    1    0
# D    0    1
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top