Daten mit count umformen [Duplikat]
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.
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