Удалить повторяющиеся строки по столбцу в R

  1. Используйте distinct функцию пакета dplyr для удаления повторяющихся строк по столбцу в R
  2. Используйте функции group_by, filter и duplicated для удаления повторяющихся строк по столбцу в R
  3. Используйте функции group_by и slice для удаления повторяющихся строк по столбцу в R

В этой статье будет рассказано, как удалить повторяющиеся строки по столбцу в R.

Используйте distinct функцию пакета dplyr для удаления повторяющихся строк по столбцу в R

Пакет dplyr предоставляет distinct функцию, одну из наиболее распространенных библиотек для работы с данными, используемых в языке R. distinct выбирает уникальные строки в заданном фрейме данных. В качестве первого аргумента он принимает фрейм данных, а затем переменные, которые необходимо учитывать при выборе. Для фильтрации уникальных строк можно указать несколько переменных столбца, но в следующем фрагменте кода мы демонстрируем примеры с одной переменной. Третий аргумент является необязательным и имеет значение по умолчанию - FALSE, но если пользователь явно передает TRUE, функция сохранит все переменные в кадре данных после фильтрации. Обратите внимание, что dplyr использует операторную функцию, называемую каналами формы - %>%, которая интерпретируется как предоставление левой переменной в качестве первого аргумента правой функции. А именно, запись x %?% f(y) становится f(x, y).

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% distinct(id, .keep_all = TRUE)
t2 <- df1 %>% distinct(gender, .keep_all = TRUE)
t3 <- df1 %>% distinct(variant, .keep_all = TRUE)

df2 <- mtcars

tmp1 <- df2 %>% distinct(cyl, .keep_all = TRUE)
tmp2 <- df2 %>% distinct(mpg, .keep_all = TRUE)

Используйте функции group_by, filter и duplicated для удаления повторяющихся строк по столбцу в R

Другое решение для удаления повторяющихся строк по значениям столбца - сгруппировать фрейм данных с переменной столбца, а затем отфильтровать элементы с помощью функций filter и duplicated. Первый шаг выполняется с помощью функции group_by, которая является частью пакета dplyr. Далее вывод предыдущей операции перенаправляется в функцию filter для удаления повторяющихся строк.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% filter (! duplicated(id))
t2 <- df1 %>% group_by(gender) %>% filter (! duplicated(gender))
t3 <- df1 %>% group_by(variant) %>% filter (! duplicated(variant))

df2 <- mtcars

tmp3 <- df2 %>% group_by(cyl) %>% filter (! duplicated(cyl))
tmp4 <- df2 %>% group_by(mpg) %>% filter (! duplicated(mpg))

Используйте функции group_by и slice для удаления повторяющихся строк по столбцу в R

В качестве альтернативы можно использовать функцию group_by вместе с slice для удаления повторяющихся строк по значениям столбцов. slice также является частью пакета dplyr и выбирает строки по индексу. Интересно, что когда фрейм данных сгруппирован, тогда slice будет выбирать строки по заданному индексу в каждой группе, как показано в следующем примере кода.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% slice(1)
t2 <- df1 %>% group_by(gender) %>% slice(1)
t3 <- df1 %>% group_by(variant) %>% slice(1)

df2 <- mtcars

tmp5 <- df2 %>% group_by(cyl) %>% slice(1)
tmp6 <- df2 %>% group_by(mpg) %>% slice(1)

Сопутствующая статья - R Data Frame

  • Найти максимальные абсолютные значения по строке во фрейме данных в R
  • Объединить два фрейма данных с разным количеством строк в R
  • Создайте большой фрейм данных в R