Remove Rows with NA in One Column in R

This tutorial shows how to remove rows with NA in one column in R. There are two R syntax to remove rows with NA in a single one column.

# Use is.na() function  
dataframe_name[!is.na(dataframe_name$column_name),]

# Use na.omit() function 
na.omit(dataframe_name, cols = "column_name")

Sample Data Frame Being Used

The following R code to generate a sample dataframe before removing any rows with NA.

# create a data frame   
df <- data.frame (cities  = rep(c('City1','City2'),each=5),
                  stores = rep(c('store1','store2','store3','store4',NA), 2),
                  sales=c(10,NA,20,50,30,10,5,4,12,4))

# print out the data frame   
print(df)

The following is the sample dataframe. There are 10 rows of data.

> print(df)   
   cities stores sales
1   City1 store1    10
2   City1 store2    NA
3   City1 store3    20
4   City1 store4    50
5   City1   <NA>    30
6   City2 store1    10
7   City2 store2     5
8   City2 store3     4
9   City2 store4    12
10  City2   <NA>     4

Examples of Remove Rows with NA in One column in R

Example 1: Use is.na()

In the following, we are going to use is.na() to remove rows with NA in the column of stores.

# remove rows with NA in the column of "stores"
df[!is.na(df$stores),]

The following is the output. As we can see, there is no NA rows in the column of stores anymore.

> df[!is.na(df$stores),]
  cities stores sales
1  City1 store1    10
3  City1 store3    20
4  City1 store4    50
6  City2 store1    10
7  City2 store2     5
8  City2 store3     4
9  City2 store4    12

Example 2: Use na.omit()

# remove rows with NA in the column of "stores"
na.omit(df, cols = "stores")

The following is the output. As we can see, there is no NA rows in the column of stores anymore.

> na.omit(df, cols = "stores")
  cities stores sales
1  City1 store1    10
3  City1 store3    20
4  City1 store4    50
6  City2 store1    10
7  City2 store2     5
8  City2 store3     4
9  City2 store4    12

Further Reading