Есть ли способ удалить дубликаты из кадра данных на определенных условиях? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь удалить дубликаты из моего кода с помощью функции distinct(), однако я не хочу, чтобы она удаляла некоторые дубликаты на основе дополнительного условия.

Например, мой фрейм данных содержит переменныеposition, place, company и source, поэтому я хочу, чтобы строки дубликатов удалялись только тогда, когда position, place и company одинаковы, а source переменная отличается.Это функция, которую я использую.

omit <- distinct(final, position, place, company, .keep_all = TRUE)

Я просто хочу, чтобы дубликаты удалялись, когда они совпадают для трех переменных, но оставались разными для другой.Есть ли другой способ сделать это?

1 Ответ

1 голос
/ 21 июня 2019

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

set.seed(123)
dd <- data.frame(matrix(sample(1:2, 10*3, TRUE), ncol = 3), "fv" = gl(2, 5,labels = letters[1:2]))
unique(dd) # 7 unique rows with all variables
#>    X1 X2 X3 fv
#> 1   1  2  2  a
#> 2   2  1  2  a
#> 4   2  2  2  a
#> 6   1  2  2  b
#> 7   2  1  2  b
#> 9   2  1  1  b
#> 10  1  2  1  b
col_dup <- names(dd)[1:3] # set which set of columns to get duplicated from
# unique(dd[,col_dup]) # what you expect in final for those rows

ind_dup <- duplicated(dd[,col_dup]) # get index of duplicated elements
new_dd <- dd[!ind_dup,]
new_dd
#>    X1 X2 X3 fv
#> 1   1  2  2  a
#> 2   2  1  2  a
#> 4   2  2  2  a
#> 9   2  1  1  b
#> 10  1  2  1  b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...