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