Count NAs per row in dataframe

74,791

Solution 1

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)))

Solution 2

You can count the NAs in each row with this command:

rowSums(is.na(dat))

where dat is the name of your data frame.

Share:
74,791
Shark7
Author by

Shark7

Updated on March 05, 2020

Comments

  • Shark7
    Shark7 about 4 years

    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?

  • Shark7
    Shark7 almost 8 years
    Thanks. That works. I ended up using this, which is a bit simpler:<br/> df$na_count <- apply(is.na(df), 1, sum)
  • ADF
    ADF over 5 years
    This solution is excellent and vectorized. Thank you.
  • David
    David over 2 years
    this solution should be selected