Von der Unterseite des ?mutate_each
(zumindest in dplyr 0,5) Es sieht wie diese Funktion aus, wie in @docendo discimus's Antwort, wird veraltet und durch flexiblere Alternativen mutate_if
, mutate_all
und mutate_at
ersetzt. Der am ähnlichste zu dem, was @hadley in seinem Kommentar erwähnt, ist wahrscheinlich mutate_at
. Beachten Sie, dass die Reihenfolge der Argumente umgekehrt ist, verglichen mit mutate_each
, und vars()
verwendet select()
wie Semantik, die ich interpretiere, um die ?select_helpers
Funktionen zu bedeuten.
dat %>% mutate_at(vars(starts_with("fac")),funs(factor)) %>%
mutate_at(vars(starts_with("dbl")),funs(as.numeric))
Aber mutate_at
können Spaltennummern anstelle eines vars()
Argument nehmen und nach durch diese Seite zu lesen, und die Alternativen suchen, landete ich mit mutate_at
, aber mit grep
auf einmal viele verschiedene Arten von Spaltennamen zu erfassen (es sei denn, Sie immer so offensichtlich Spaltennamen haben!)
dat %>% mutate_at(grep("^(fac|fctr|fckr)",colnames(.)),funs(factor)) %>%
mutate_at(grep("^(dbl|num|qty)",colnames(.)),funs(as.numeric))
ich ziemlich aufgeregt war, um aus Bezifferung mutate_at
+ grep
, weil jetzt eine Zeile auf viel arbeiten kann von Säulen.
BEARBEITEN - jetzt sehe ich matches()
in der select_helpers, die Regex behandelt, so jetzt gefällt mir das.
dat %>% mutate_at(vars(matches("fac|fctr|fckr")),funs(factor)) %>%
mutate_at(vars(matches("dbl|num|qty")),funs(as.numeric))
Ein weiterer allgemein bezogenen Kommentar - wenn Sie alle Ihre Datumsspalten mit anpassungsfähigen Namen haben, und einheitliche Formate, das ist mächtig. In meinem Fall werden dadurch alle meine YYYYMMDD-Spalten, die als Zahlen gelesen wurden, in Daten umgewandelt.
mutate_at(vars(matches("_DT$")),funs(as.Date(as.character(.),format="%Y%m%d")))
In diesem Fall 'starts_with()' – hadley
Vielen Dank für Ihre Anregung Sie auch, @hadley nutzen könnten. Für den ersten Fall wäre das also dat%>% mutate_each (funs (Faktor), starts_with ("fac")), um alle Spalten, die mit der Zeichenkette "fac" beginnen, in factor zu konvertieren. –
@docendodiscimus das ist richtig – hadley