How to use complete.cases in R (With Examples)

complete.cases() in R is a function that can be used to identify complete cases in a data set. This function returns a logical vector indicating which observations are complete, that is, they have no missing values. For example, if you have a data frame containing missing values, you can use complete.cases() to identify which rows have all complete data. This can be useful for data cleaning and manipulating data sets prior to analysis.


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

x