Count NAs per row in dataframe [duplicate]
I've got dataframe that has batch ID and the results of six tests performed on each batch. The data looks like this:
batch_id test1 test2 test3 test4 test5 test6
001 0.121 NA 0.340 0.877 0.417 0.662
002 0.229 0.108 NA 0.638 NA 0.574
(there are a few hundred rows in this dataframe, only one row per batch_id)
I'm looking for a way to count how many NAs there are for each batch_id (for each row). I feel like this should be do-able with a few lines of R code at the most, but I'm having trouble actually coding it. Any ideas?
Solution 1:
You can count the NA
s in each row with this command:
rowSums(is.na(dat))
where dat
is the name of your data frame.
Solution 2:
You could add a new column to your data frame containing the number of NA
values per batch_id
:
df$na_count <- apply(df, 1, function(x) sum(is.na(x)))