You can use the complete.cases() function in R to remove missing values in a vector, matrix, or data frame.
This function uses the following basic syntax:
#remove missing values from vector x <- x[complete.cases(x)] #remove rows with missing values in any column of data frame df <- df[complete.cases(df), ] #remove rows with NA in specific columns of data frame df <- df[complete.cases(df[ , c('col1', 'col2', ...)]), ]
The following examples show how to use this function in practice.
Example 1: Remove Missing Values from Vector
The following code shows how to remove all NA values from a vector:
#define vector x <- c(1, 24, NA, 6, NA, 9) #remove NA values from vector x <- x[complete.cases(x)] x [1] 1 24 6 9
Example 2: Remove Rows with NA in Any Column of Data Frame
The following code shows how to remove rows with NA values in any column of a data frame :
#define 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 value in any column data frame df <- df[complete.cases(df), ] #view data frame df x y z 2 24 3 7 4 6 8 15 6 9 12 14
Example 3: Remove Rows with NA in Specific Columns of Data Frame
The following code shows how to remove rows with NA values in specific columns of a data frame :
#define 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 value in y or z column df <- df[complete.cases(df[ , c('y', 'z')]), ] #view data frame df x y z 2 24 3 7 3 NA 4 5 4 6 8 15 6 9 12 14
Additional Resources
How to Use “Is Not NA” in R
How to Impute Missing Values in R
How to Replace NAs with Strings in R
Thanks for the upload. The code for example three worked perfectly for my data.
I’m confused by the extra commas after the complete.case function and the one inside the function. Why are those necessary?