Ich versuche, eine "Gruppe von" - Stil gewichtet Mittel in R zu tun. Mit einigen grundlegenden bedeutet der folgende Code (mit dem Plyr-Paket von Hadley) hat gut funktioniert.Gruppe von in R, ddply mit weighted.mean
ddply(mydf,.(period),mean)
Wenn ich den gleichen Ansatz mit weighted.mean bekomme ich folgende Fehlermeldung „‚x‘und‚w‘müssen die gleiche Länge haben“, die ich nicht verstehe, weil der weighted.mean Teil arbeitet außerhalb ddply.
weighted.mean(mydf$mycol,mydf$myweight) # works just fine
ddply(mydf,.(period),weighted.mean,mydf$mycol,mydf$myweight) # returns the erros described above
ddply(mydf,.(period),weighted.mean(mydf$mycol,mydf$myweight)) # different code same story
Ich dachte an eine benutzerdefinierte Funktion statt mit weighted.mean schreiben und dann übergeben Sie etwas Neues von Grund auf neu ddply oder auch mit Teilmenge zu schreiben. In meinem Fall wäre es hoffentlich zu viel Arbeit, aber es sollte durch eine klügere Lösung mit dem was schon da ist.
thx für irgendwelche Vorschläge im Voraus!
Das ist schön. Haven't hatte bisher viel mit anonymen Funktionen zu tun. scheint wirklich einen Blick wert. Ich verstehe die Syntax/Idee noch nicht vollständig, aber ich werde es mir anschauen, Danke für Ihre Hilfe! Müssen Sie alles in einer Zeile drucken, weil dort kein "{}" steht? Wo kann ich etwas über anonyme Funktionen lernen? –
Nun, * all * diese '' apply', 'by', ... Funktionen verwenden anonyme Funktionen, so dass Sie viele Beispiele finden sollten. Curly geschweifte Klammern werden benötigt, wenn Sie mehr als einen Befehl gruppieren. Schließlich haben Sie keine anonyme Funktion - Sie können auch Ihre eigenen definieren - aber mit ihnen spart beim Tippen :) –
was ist mit 'lapply (split (Iris, Arten), gewichtete.Mean)' oder etw so ? – aL3xa