dplyr mutieren rowwise max Reichweite von Spalten
Kann ich mit dem folgenden zurückzukehren, die maximal 2 Spalten
newiris<-iris %>%
rowwise() %>%
mutate(mak=max(Sepal.Width,Petal.Length))
Was ich tun möchte, ist zu finden, dass sich maximal über einen Bereich von Spalten, so habe ich nicht den Namen jeder ein, wie diese
newiris<-iris %>%
rowwise() %>%
mutate(mak=max(Sepal.Width:Petal.Length))
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt
rowwise()
diese kann getan werden, mitpmax
Kann sein, dass wir verwenden können
interp
auslibrary(lazyeval)
wenn wir wollen, verweisen Sie die Spalte-Namen, gespeichert in einervector
.Mit
rlang
und quasiquotation haben wir ein anderes dplyr-option. Zunächst Holen Sie sich die Reihe der Namen, die wir wollen, um zu berechnen, parallel max:Dann können wir
!!!
undrlang::syms
zu berechnen, die parallel max für jede Zeile dieser Spalten:rlang::syms
nimmt ein string-input (den Spaltennamen), und verwandelt es in ein symbol!!!
unquotes und Spleiße das argument, hier den SpaltennamenGibt:
h/t: https://stackoverflow.com/a/47773379/1036500
Für die Auswahl einiger Spalten ohne den ganzen Namen eingeben bei der Verwendung
dplyr
ich lieberselect
parameter aussubset
Funktion.Können Sie bekommen gewünschten Ergebnis wie dieses:
select( 2:4 )
stattsubset( select = 2:4 )
.Scheint es, wie @akrun Antwort behandelt nur die Fälle, wenn Sie können, geben Sie die Namen aller Variablen, ob das mit
mutate
direkt mitmutate(pmax_value=pmax(var1, var2))
oder bei der Verwendung von lazy evaluation mitmutate_
undinterp
übermutate_(interp(~pmax(v1, v2), v1=as.name(var1), v2=as.name(var2))
.Ich sehe zwei Möglichkeiten, dies zu tun, wenn Sie wollen, verwenden Sie die Doppelpunkt-syntax
Sepal.Length:Petal.Width
oder wenn Sie zufällig ein Vektor mit den Namen der Spalten.Die erste ist mehr elegant. Sie sauber die Daten und nehmen das maximum unter den Werten, wenn gruppiert:
Den härteren Weg ist die Verwendung einer interpolierten Formel. Das ist gut, wenn man einen character-Vektor mit den Namen der Variablen max wird über oder wenn Sie die Tabelle ist zu groß/breit für es zu sein aufgeräumt.