Как удалить строки с помощью dplyr (с примерами)


Вы можете использовать следующий базовый синтаксис для удаления строк из фрейма данных в R с помощью dplyr:

1. Удалите все строки с NA

df %>%
 na. omit ()

2. Удалите все строки с NA в определенном столбце.

df %>%
 **filter( ! is. na (column_name))

3. Удалите дубликаты

df %>%
 distinct()

4. Удалить строки по позиции индекса

df %>%
 **filter( ! row_number() %in% c(1, 2, 4))

5. Удалить строки в зависимости от условия

df %>%
 filter(column1 == 'A ' | column2 > 8)

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

library(dplyr)

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C'),
 points=c(4, NA, 7, 5, 9, 9),
 assists=c(1, 3, 5, NA, 2, 2))

#view data frame
df

 team points assists
1 A 4 1
2 A NA 3
3 B 7 5
4 B 5 NA
5 C 9 2
6 C 9 2

Пример 1: удалить любую строку с NA

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

#remove any row with NA
df %>%
 na. omit ()

 team points assists
1 A 4 1
3 B 7 5
5 C 9 2
6 C 9 2

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

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

#remove any row with NA in 'points' column:
df %>%
 filter( ! is. na (points))

 team points assists
1 A 4 1
2 B 7 5
3 B 5 NA
4 C 9 2
5 C 9 2

Пример 3: удаление повторяющихся строк

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

#remove duplicate rows
df %>%
 distinct()

 team points assists
1 A 4 1
2 A NA 3
3 B 7 5
4 B 5 NA
5 C 9 2

Пример 4. Удаление строк по позиции индекса

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

#remove rows 1, 2, and 4
df %>%
 filter( ! row_number() %in% c(1, 2, 4))

 team points assists
1 B 7 5
2 C 9 2
3 C 9 2

Пример 5. Удаление строк по условию

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

#only keep rows where team is equal to 'A' or points is greater than 8
df %>%
 filter(column1 == 'A ' | column2 > 8)

 team points assists
1 A 4 1
2 A NA 3
3 C 9 2
4 C 9 2

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

В следующих руководствах объясняется, как выполнять другие распространенные функции в dplyr:

Как выбрать столбцы по индексу с помощью dplyr
Как ранжировать переменные по группам с помощью dplyr
Как заменить NA на ноль в dplyr