dplyr::mutieren (zuweisen na.rm =TRUE)
Ich habe einen Daten.Rahmen, 100 Variablen. Ich möchte die Summe der drei Variablen nur mit mutate
(nicht summarise
).
Wenn es NA in einem der 3 Variablen, die ich immer noch wollen, um die sum
. Um dies zu tun, verwenden mutate
ersetzte ich alle NA
Werte mit 0
mit ifelse
dann hab ich die sum
.
library(dplyr)
df %>% mutate(mod_var1 = ifelse(is.na(var1), 0, var1),
mod_var2 = ifelse(is.na(var2), 0, var2),
mod_var3 = ifelse(is.na(var3), 0, var3),
sum = (mod_var1+mod_var2+mod_var3))
Gibt es eine bessere (kürzere) Weg, dies zu tun?
DATEN
df <- read.table(text = c("
var1 var2 var3
4 5 NA
2 NA 3
1 2 4
NA 3 5
3 NA 2
1 1 5"), header =T)
replace(df, is.na(df), 0) %>% mutate(sum = var1 + var2 + var3)
- Deine Antwort ist toll. Jedoch, wie ich bereits in der Frage ich habe einen Daten.Rahmen, die 100 Variablen und Ihre Antwort ersetzen, NA alle 100 Variablen mit null (nicht nur var1,var2 und var3), die ich nicht will
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wir können
Reduce
mit+
Oder mit
rowSums
Benchmarks
names(df)[c(3, 7, 76)]
oder Sie können die tatsächlichen Namen der Spalten, d.h.rowSums(.[c("somename", "another", "var5")]
rowwise()
ist mein go-to-Funktion. Es ist wiegroup_by()
aber es behandelt jede Zeile als eine einzelne Gruppe.Wo besser =
tidyr
:Falls Ihr Datensatz wird balanciert, um zu wachsen...