Wie kann ich Datenrahmenspalten mit unterschiedlichen Werten von einem externen Vektor (mit dplyr) bearbeiten?
In R möchte ich data.frame-Spalten mit entsprechend benannten Werten bearbeiten (beispielsweise multiplizieren), die in einem Vektor gespeichert sind (oder data.frame, falls dies einfacher ist).
Sagen wir, ich möchte zuerstsummarise
die Variablendisp
, hp
, undwt
von demmtcars
dataset.
vars <- c("disp", "hp", "wt")
mtcars %>%
summarise_at(vars, funs(sum(.))
(Werfen Sie einengroup_by(cyl)
in die Mischung, oder verwenden Siemutate_at
wenn du mehr Zeilen haben möchtest)
Nun möchte ich jede der resultierenden Spalten mit einem bestimmten Wert multiplizieren, gegeben durch
multiplier <- c("disp" = 2, "hp" = 3, "wt" = 4)
Ist es möglich, innerhalb des @ auf diese zu verweisesummarise_at
Funktion?
Das Ergebnis sollte so aussehen (und ich möchte nicht direkt auf die Variablennamen verweisen müssen, wenn ich dorthin komme):
disp hp wt
14766.2 14082 411.808
AKTUALISIEREN
Vielleicht war meine MWE zu minimal. Angenommen, ich möchte dieselbe Operation mit einem durch @ gruppierten data.frame ausführecyl
mtcars %>%
group_by(cyl) %>%
summarise_at(vars, sum)
Das Ergebnis sollte also sein:
cyl disp hp wt
1 4 2313.0 2727 100.572
2 6 2566.4 2568 87.280
3 8 9886.8 8787 223.956
UPDATE 2:
Vielleicht war ich auch hier nicht explizit genug, aber die Spalten im data.frame sollten mit den jeweiligen Werten im Vektor (und nur den im Vektor erwähnten Spalten) multipliziert werden, so dass z.disp
sollte mit 2 multipliziert werden,hp
um 3 undwt
um 4, alle anderen Variablen (z. B.cyl
) sollte von der Multiplikation unberührt bleiben.