data.table - merge - дублирует, несмотря на all.x = TRUE в R - PullRequest
1 голос
/ 15 апреля 2020

Пожалуйста, исправьте меня, если я ошибаюсь, но я подумал, что, используя all.x = TRUE, нельзя получить строки, которые присутствуют в x. Я сделал очень простое слияние command:

basis <<- merge(client[, c("clientID")],
                          claimsClientTotal[, c("clientID")],
                          by = "clientID", all.x = TRUE)

Однако в тебе слилось больше строк data.table, чем в x - здесь client. Кроме того, количество дубликатов составляет всего 43

> nrow(client)
[1] 194671
> anyDuplicated(client)
[1] 0
> 
> basis <- merge(client[, c("clientID")],
+                           claimsClientTotal[, c("clientID")],
+                           by = "clientID", all.x = TRUE)
> nrow(basis)
[1] 216764
> anyDuplicated(basis)
[1] 43

. Как это возможно, что число строк в объединенной таблице data.table больше, чем в оригинале, при использовании all.x = TRUE?

Кроме того, почему всего 43 дубликата, но разница в строке больше 43?

я что-то упустил?

1 Ответ

1 голос
/ 15 апреля 2020

Здесь anyDuplicated возвращает индексную позицию первого дубликата

v2 <- c(1:100, 100)
anyDuplicated(v2)
#[1] 101

Это просто способ проверить, есть ли дубликаты для вектора или data.frame / matrix

Если нам нужно получить количество дубликатов

sum(duplicated(v2))
#[1] 1

Если нам нужно получить только дубликаты строк

basis[duplicated(basis),]

Или вернуть все дубликаты

basis[duplicated(basis)|duplicated(basis, fromLast = TRUE),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...