R Dplyr mutieren, ist die Berechnung der Standardabweichung für jede Zeile
Ich versuche zu berechnen, den Mittelwert und die Standardabweichung von bestimmten Spalten in einem data frame, und kehren Sie diese Werte für neue Spalten in der Daten-frame. Ich kann diese arbeiten für meine:
library(dplyr)
mtcars = mutate(mtcars, mean=(hp+drat+wt)/3)
Jedoch, wenn ich versuche, das gleiche für die Standardabweichung, ich habe ein Problem, denn ich kann nicht fest die Gleichung wie ich für meine, sehr leicht. So, ich versuche um eine Funktion zu verwenden, wie folgt:
mtcars = mutate(mtcars, mean=(hp+drat+wt)/3, stdev = sd(hp,drat,wt))
Resultieren in der Fehlermeldung "Error in sd(PS, verflixt, wt) : unused argument (wt)". Wie kann ich meine richtige syntax? Danke.
- Um zu berechnen, die bedeuten, dass Sie tatsächlich schrieb die Formel, sondern um zu berechnen, SD man verwendet die eingebaute
sd
Funktion einige seltsame Art und Weise. Sieht es nicht inkonsistent, Sie? - Ja, das ist der Grund, warum ich sagte "wenn ich versuche, das gleiche für die Standardabweichung, ich habe ein Problem, denn ich kann nicht fest die Gleichung wie ich für meine, sehr leicht. So, ich versuche um eine Funktion zu verwenden." Ich bin nicht sicher, warum Sie denken, dass ich verwendet die sd-Funktion auf seltsame Weise, obwohl ich sicher bin, das ist wahr. Die sd-Funktion scheint in einem Vektor von numerischen, zum Beispiel sd(c(3,5,6)). Obwohl ich sicher bin, dass es für Sie offensichtlich, warum ist das, was ich Tue, nicht richtig ist? Danke.
- Vielleicht das, was @DavidArenburg ist darauf hindeutet, ist, dass Ihr Anruf an
sd
ist falsch, was es ist, in eine allgemein falsche Art und Weise. Zum Beispiel, versuchen Siesd(1,2,3)
, dann Lesen Sie?sd
und sehen (1), es beschreibt das erste argument als "x: ein numerischer Vektor", und (2) es ist insbesondere nicht enthalten "..." (Ellipsen, die erlauben würde, für eine beliebige Anzahl von Argumenten, wie Sie sind, providing). - Mit
+
zu bekommen, bedeuten möglicherweise nicht erwartungsgemäß, wenn es NA ' s, In diemean
undrowMeans
ist, gibt es Optionen für das entfernen von NA, dh.na.rm=TRUE
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen,
Oder mit
do
dplyr
? Ich verwendetdplyr_0.4.1.9000
mtcars %>% mutate(..
wie bei der Aktualisierung.as.matrix(.[nm1])
zuas.matrix(.[ ,nm1])
..[nm1]
bekommt die Spalten, die standardmäßig angezeigt wird, und dann nur konvertiertmatrix
. Wenn es wurde bereits eine matrix, dann.[, nm1]
wäre der richtige Weg. Also, in diesem Fall, entweder man arbeitet. Wenn Sie Zweifel haben, überprüfen Sie bitte das Ergebnis der beiden Fällen die gleiche wäre.Können Sie auch schreiben Sie Ihre eigene vektorisierte
RowSD
Funktion, wie indann
Nicht viel Veränderung nötig, fügen Sie einfach
rowwise()
(danke @akrun für den Kommentar) und wickeln Sie den Spaltennamen inc(...)
(um den Fehler zu beheben):@r2evans Verwenden Sie denselben Befehl geben mich identisch mit dem Wert für die sd. meine ist in Ordnung. Finden Sie in der folgenden Ausgabe