R: удалить строки из фрейма данных в зависимости от условия


Вы можете использовать функцию subset() для удаления строк с определенными значениями во фрейме данных в R:

#only keep rows where col1 value is less than 10 and col2 value is less than 8
new_df <- subset(df, col1 < 10 & col2< 8 )

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

#create data frame
df <- data.frame(a=c(1, 3, 4, 6, 8, 9),
 b=c(7, 8, 8, 7, 13, 16),
 c=c(11, 13, 13, 18, 19, 22),
 d=c(12, 16, 18, 22, 29, 38))

#view data frame
df

 a b c d
1 1 7 11 12
2 3 8 13 16
3 4 8 13 18
4 6 7 18 22
5 8 13 19 29
6 9 16 22 38

Пример 1. Удаление строк, равных некоторому значению

В следующем коде показано, как удалить все строки, в которых значение в столбце «c» равно 13:

#remove rows where column 'c' is equal to 13
new_df <- subset(df, c != 13) 

#view updated data frame
new_df

 a b c d
1 1 7 11 12
4 6 7 18 22
5 8 13 19 29
6 9 16 22 38

Пример 2. Удаление строк, равных одному из нескольких значений

В следующем коде показано, как удалить все строки, в которых значение в столбце «b» равно 7 или 8:

#remove rows where value in column b is equal to 7 or 8
new_df <- subset(df, ! (b %in% c(7, 8)))

#view updated data frame
new_df

 a b c d
5 8 13 19 29
6 9 16 22 38

Пример 3. Удаление строк на основе нескольких условий

В следующем коде показано, как удалить все строки, в которых значение в столбце «b» равно 7 или где значение в столбце «d» равно 38:

#remove rows where value in column b is 7 or value in column d is 38
new_df <- subset(df, b != 7 & d != 38)

#view updated data frame
new_df

 a b c d
2 3 8 13 16
3 4 8 13 18
5 8 13 19 29

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

Как удалить повторяющиеся строки в R
Как использовать оператор %in% в R
Как перекодировать значения в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.