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


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

Метод 1: используйте базу R

#remove duplicate rows across entire data frame
df[ ! duplicated(df), ]

#remove duplicate rows across specific columns of data frame
df[ ! duplicated(df[c('var1')]), ]

Способ 2: используйте dplyr

#remove duplicate rows across entire data frame 
df %>%
 distinct(.keep_all = TRUE )

#remove duplicate rows across specific columns of data frame
df %>%
 distinct(var1, .keep_all = TRUE )

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

#define data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B'),
 position=c('Guard', 'Guard', 'Forward', 'Guard', 'Center', 'Center'))

#view data frame
df

 team position
1 A Guard
2 A Guard
3 A Forward
4 B Guard
5 B Center
6 B Center

Пример 1. Удаление повторяющихся строк с помощью базы R

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

#remove duplicate rows from data frame
df[ ! duplicated(df), ]

 team position
1 A Guard
3 A Forward
4 B Guard
5 B Center

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

#remove rows where there are duplicates in the 'team' column
df[ ! duplicated(df[c('team')]), ]

 team position
1 A Guard
4 B Guard

Пример 2. Удаление повторяющихся строк с помощью dplyr

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

library(dplyr)

#remove duplicate rows from data frame
df %>%
 distinct(.keep_all = TRUE )

 team position
1 A Guard
2 A Forward
3 B Guard
4 B Center

Обратите внимание, что аргумент .keep_all указывает R сохранить все столбцы из исходного фрейма данных.

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

library(dplyr)

#remove duplicate rows from data frame
df %>%
 distinct(team, .keep_all = TRUE )

 team position
1 A Guard
2 B Guard

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

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

Как удалить строки в R на основе условия
Как удалить строки с NA в одном конкретном столбце в R