ein kleine Daten wie die unten gesetzt Stellen Sie sich vor, bestehend aus drei Variablen:Die Anzahl der Zeilen mit einer bestimmten Anzahl von fehlenden Werten
v1 <- c(0, 1, NA, 1, NA, 0)
v2 <- c(0, 0, NA, 1, NA, NA)
v3 <- c(1, NA, 0, 0, NA, 0)
df <- data.frame(v1, v2, v3)
df
v1 v2 v3
1 0 0 1
2 1 0 NA
3 NA NA 0
4 1 1 0
5 NA NA NA
6 0 NA 0
One den is.na Befehl verwenden kann, als die Zahl berechnen folgt mindestens einen fehlenden Wert von Reihen mit - und R 4 würde zurück:
sum(is.na(df$v1) | is.na(df$v2) | is.na(df$v3))
oder die Anzahl der Zeilen mit allen drei Werten fehlt - und R 1 würde zurück:
sum(is.na(df$v1) & is.na(df$v2) & is.na(df$v3))
Zwei Fragen an dieser Stelle:
(1) Wie kann ich die Anzahl der Zeilen berechnen, in denen "genau ein" oder "genau zwei" Werte fehlen?
(2) Wenn ich das Obige in einem großen Datensatz tun soll, wie kann ich den Umfang der Berechnung auf v1, v2 und v3 beschränken (dh ohne eine Teilmenge erstellen zu müssen)?
Ich versuchte Variationen von is.na, nrow und df, konnte aber keine von ihnen zur Arbeit bekommen.
Danke!
Sie sind hier das Rad in ineffiziente Art und Weise neu zu erfinden. R hat alle diese Funktionen vektorisiert –
Ja, wir können rowSums/Reduce von akrun verwenden, wenn die Effizienz @David betrifft. –