Как использовать complete.cases в R (с примерами)


Вы можете использовать функцию complete.cases() в R, чтобы удалить пропущенные значения в векторе, матрице или фрейме данных.

Эта функция использует следующий базовый синтаксис:

#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', ...)]), ]

В следующих примерах показано, как использовать эту функцию на практике.

Пример 1: удаление пропущенных значений из вектора

Следующий код показывает, как удалить все значения NA из вектора:

#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

Пример 2: удалить строки с NA в любом столбце фрейма данных

В следующем коде показано, как удалить строки со значениями NA в любом столбце фрейма данных:

#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

Пример 3: удаление строк с NA в определенных столбцах фрейма данных

В следующем коде показано, как удалить строки со значениями NA в определенных столбцах фрейма данных:

#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

Дополнительные ресурсы

Как использовать «Это не NA» в R
Как заменить пропущенные значения в R
Как заменить NA строками в R