How to Use “Is Not NA” in R


You can use the following syntax to return values in R that are not NA values:

#return only values that are not NA
x <- x[!is.na(x)]

The following examples show how to use this syntax with both vectors and data frames in R.

Example 1: Return Values that are Not NA in Vector

The following code shows how to return the values in a vector that are not NA:

#create vector
x <- c(1, 24, NA, 6, NA, 9)

#return only values that are not NA
x <- x[!is.na(x)]

[1]  1 24  6  9

Example 2: Return Rows that are Not NA in One Column of Data Frame

The following code shows how to return the rows in a data frame that do not have an NA value in a specific column:

#create data frame
df <- data.frame(x=c(1, 24, NA, 6, NA, 9),
                 y=c(NA, 3, 4, 8, NA, 12),
                 z=c(NA, 7, 5, 15, 7, 14))

#view data frame
df

   x  y  z
1  1 NA NA
2 24  3  7
3 NA  4  5
4  6  8 15
5 NA NA  7
6  9 12 14

#remove rows with NA in z column
df <- df[!(is.na(df$z)), ]

#view data frame
df

   x  y  z
2 24  3  7
3 NA  4  5
4  6  8 15
5 NA NA  7
6  9 12 14

Example 3: Return Rows that are Not NA in Several Columns

The following code shows how to return the rows in a data frame that do not have an NA value in one of several specific columns:

#create data frame
df <- data.frame(x=c(1, 24, NA, 6, NA, 9),
                 y=c(NA, 3, 4, 8, NA, 12),
                 z=c(NA, 7, 5, 15, 7, 14))

#view data frame
df

   x  y  z
1  1 NA NA
2 24  3  7
3 NA  4  5
4  6  8 15
5 NA NA  7
6  9 12 14

#remove rows with NA in x or y column
df <- df[!(is.na(df$x)) & !(is.na(df$y)), ]

#view data frame
df

   x  y  z
2 24  3  7
4  6  8 15
6  9 12 14

Example 4: Return Rows that are Not NA in Any Column

The following code shows how to return the rows in a data frame that do not have an NA value in any column:

#create data frame
df <- data.frame(x=c(1, 24, NA, 6, NA, 9),
                 y=c(NA, 3, 4, 8, NA, 12),
                 z=c(NA, 7, 5, 15, 7, 14))

#view data frame
df

   x  y  z
1  1 NA NA
2 24  3  7
3 NA  4  5
4  6  8 15
5 NA NA  7
6  9 12 14

#remove rows with NA in any column
df <- na.omit(df)

#view data frame
df

   x  y  z
2 24  3  7
4  6  8 15
6  9 12 14

Additional Resources

How to Replace NAs with Strings in R
How to Impute Missing Values in R

Leave a Reply

Your email address will not be published.