Группировать по уникальному количеству - PullRequest
0 голосов
/ 26 мая 2020

Удалось ли кому-нибудь успешно получить library(data.table) в R для правильного вычисления уникального числа с помощью функции «by».

См. Мой синтаксис.

x <- case_dt[,.(N=uniqueN(case_dt$case.id)), by=territory]

этот код дает следующий результат. Которая не сгруппирована по территории. Есть идеи?

enter image description here

1 Ответ

1 голос
/ 26 мая 2020

Вам нужно просто удалить операторы case_dt и $:

case_dt[,.(N=uniqueN(case.id)),by=territory]

Рассмотрим этот воспроизводимый пример:

library(data.table)
mtcars <- as.data.table(mtcars)
mtcars[,.(N = uniqueN(cyl)), by = gear]
   gear N
1:    4 2
2:    3 3
3:    5 3

Это работает, потому что cyc является подмножеством by = gear.

В отличие от:

mtcars[,.(N = uniqueN(mtcars$cyl)), by = gear]
   gear N
1:    4 3
2:    3 3
3:    5 3

Это потому, что вы вызываете uniqueN на mtcars$cyl из глобальной среды для каждой группы.

Так действительно , это все равно что называть это каждую группу:

uniqueN(mtcars$cyl)
[1] 3
...