Вы можете использовать функцию 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