I\'ve got a data frame with lots of columns. For each row of the data frame, I\'d like to get a count of how many columns are NA. The problem is that I\'m only interested in
You can use is.na() over the selected columns, then rowSums() the result:
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]))
df$word_count <- rowSums( !is.na( df [,3:5]))
df
id name word1 word2 word3 n_words
1 1 apple a actual 2
2 2 apricot able add 2
3 3 avocado about address 2
4 4 banana absolute admit agree 3
5 5 bell pepper accept advertise 2
6 6 bilberry affect 1
7 7 blackberry achieve afford alright 3
8 8 blackcurrant across after 2
9 9 blood orange act afternoon 2
10 10 blueberry active again awful 3
Using dplyr you could do this:
df %>%
select(3:5) %>%
is.na %>%
`!` %>%
rowSums