在按多个条件分组时,我想保留空组(使用默认值,例如 NA 或 0)。
dt = data.table(user = c("A", "A", "B"), date = c("t1", "t2", "t1"), duration = c(1, 2, 1))
dt[, .("total" = sum(duration)), by = .(date, user)]
结果:
date user total
1: t1 A 1
2: t2 A 2
3: t1 B 1
想要的结果:
date user total
1: t1 A 1
2: t2 A 2
3: t1 B 1
3: t2 B NA
一种解决方案可能是在分组之前添加具有 0 值的行,但它需要创建许多列的笛卡尔积并手动检查该组合是否已经存在值,但我更喜欢内置/更简单的一个。
最佳答案
你可以试试:
dt[CJ(user = user, date = date, unique = TRUE), on = .(user, date)]
user date duration
1: A t1 1
2: A t2 2
3: B t1 1
4: B t2 NA
关于r - 在 R 中与 data.table 分组时保留空组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57514328/