Aggregation erfordert Spaß.Aggregat: Länge als Standard verwendet
Ich habe eine Datei, die ich gerne umgestalten, es zu verwenden, R: Dies sind die Befehle, die ich verwende.
x <- data.frame(read.table("total.txt", sep=",", header=T)
y <- melt(x, id=c("Hostname", "Date", "MetricType"))
wenn ich diesen Befehl ausgeben, um im Grunde kombinieren, Datum mit Stunde, bekomme ich eine Fehlermeldung und das Fenster hängt.
yy <- cast(y, Hostname + Date + variable ~ MetricType)
Dies ist der Fehler:
Aggregation requires fun.aggregate: length used as default
ServerNa Date MetricType Hour Value
19502 server1 01/05/2012 MemoryAVG Hour5 41.830000
19503 server1 01/05/2012 CPUMaximum Hour5 9.000000
19504 server1 01/05/2012 CPUAVG+Sev Hour5 9.060000
19505 server1 01/05/2012 CPUAVG Hour5 30.460000
19506 server1 01/05/2012 61 Hour5 63.400000
19507 server1 01/05/2012 60 Hour5 59.300000
19508 server2 01/05/2012 MemoryAVG Hour5 10.690000
19509 server2 01/05/2012 CPUMaximum Hour5 1.000000
19510 server2 01/05/2012 CPUAVG+Sev Hour5 0.080000
19511 server2 01/05/2012 CPUAVG Hour5 1.350000
Gibt es eine einfache Möglichkeit dies zu tun, ohne hängen die server?
wenn ich in der Bibliothek(reshape2) und diese:
yy <- acast(y, Hostname + Date + variable ~ MetricType, fun.aggregate=mean)
alle Werte wiederum in NA. Ich habe keine Ahnung, was Los ist?
- Es gibt eine fehlende rechts-Klammer in der ersten Zeile. (Und), Welche version Umformen?
cast
wurde ersetzt durchdcast
undacast
imreshape2
- Ich habe versucht, reshape2 und dcast und warfen, nicht arbeiten Werte sind becomeing NA. irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klarstellung: In der Diskussion unten, ich beziehe mich auf
dcast()
eher alscast()
. Als Maiasaura Hinweise in den Kommentaren, die Funktioncast()
von derreshape
Paket ersetzt wurde, in derreshape2
Paket durch zwei Funktionen:dcast()
(für Daten.frame-Ausgabe) und dieacast()
(für array-oder matrix-Ausgabe). In jedem Fall, meine Kommentare über die Notwendigkeit für einefun.aggregate
argument halten gleichermaßen fürcast()
,dcast()
, undacast()
.Der Fehler wird ausgelöst, weil für mindestens eine Kombination der kategorischen Variablen in dem Aufruf
cast()
Ihre Daten.Rahmeny
muss mindestens zwei Zeilen der Daten. Dokumentiert, wie in?cast
(oder?dcast
):Führen Sie den code unten, um zu sehen, wie dies funktioniert, und wie es beseitigt werden kann. In der letzten Zeile des Codes, ich benutze die
fun.aggregate
argument zu sagendcast()
zu verwendenmean()
zu kombinieren Sie die Werte für eine wiederholte Kombination von Variablen. In seinen Platz, Sie können setzen, was die aggregation-Funktion am besten für Ihre eigene situation.cast()
von derreshape
- Paket ist veraltet und wird ersetzt durchdcast()
(wenn Sie wollen Daten.frame-Ausgabe) und dieacast()
(wenn Sie möchten, array-oder matrix-Ausgabe). Zu findendcast
, müssen Sie zuerst tun:install.packages("reshape2"); library(reshape2)
. Die größere Frage aber ist, ob Sie versucht haben, die Versorgungcast()
mit dem Namen einer Funktion in derfun.aggregate
argument. Sollte es mitcast()
so wie es ist, mit derdcast
undacast
Funktionen ersetzt es...fun.aggregate = function(X) mean(X, na.rm=TRUE)
stattfun.aggregate = mean
? Dann, wenn das nicht funktioniert, vielleicht versuchenfun.aggregate = class
um zu sehen, was ist die Klasse, von den Daten, die Sie versuchen, nehmen Sie den Mittelwert.dput()
) einige minimale Teilmenge der Daten, die das problem reproduziert, die im Idealfall als eine separate Frage. Viel Glück.