Zählen Sie, wie viele Werte in einigen Zellen einer Zeile nicht NA (in R) sind.

Ich habe einen Datenrahmen mit vielen Spalten. Ich möchte für jede Zeile des Datenrahmens die Anzahl der Spalten ermitteln, die NA sind. Das Problem ist, dass ich nur an einigen Spalten interessiert bin und diese Spalten (effizient) aufrufen möchte.

Wenn ich mutiere, wie ich es in der folgenden gefälschten Probe tue, bekomme ich die richtige Antwort.

library(stringr)

df  <- data_frame(
         id = 1:10
       , name = fruit[1:10]
       , word1 = c(words[1:5],NA,words[7:10])
       , word2 = words[11:20]
       , word3 = c(NA,NA,NA,words[25],NA,NA,words[32],NA,NA,words[65])
    ) %>%
    mutate(
        n_words = 
            as.numeric(!is.na(word1)) + 
            as.numeric(!is.na(word2)) + 
            as.numeric(!is.na(word3)) 
    )

Es ist jedoch schmerzhaft, selbst für ein Spielzeugbeispiel wie dieses zu tippen und zu lesen - wenn ich mehr als 3 Spalten zu zählen habe, ist dies weitgehend nutzlos. Gibt es eine bessere Möglichkeit, dies zu schreiben, vielleicht mitselect() Stilsyntax (zBn_words = !count_blank(word1:word3))?

Ich dachte über die Verwendung von @ nasummarize()sans-Gruppierung, ich benötige jedoch die Daten in den Spalten, die ich zähle, und wenn ich sie zu @ hinzufügroup_by, Ich bin im selben Boot und rufe wieder fast alle Kolumnen aus.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage