r - 在 R 中与 data.table 分组时保留空组

标签 r data.table

在按多个条件分组时,我想保留空组(使用默认值,例如 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/

相关文章:

r - 矩阵操作: set all elements to 0 except for row maximum (maxima)

用于捕获时间的正则表达式在冒号前没有两位数,只有一位

r - 如果 df 不为空,则 dplyr 负选择

r - 使用 R 访问 Azure Databricks 中的大数据的最佳实践

r - 通过匹配 R 中的嵌套列表来对数据框进行子集化和连接

r - 更快地计算每个时间步内所有个体之间的距离

r - 如何将 htest 列表存储到矩阵中?

r - 在不使用 xlsx 包的情况下将 csv 转换为 excel

r - data.table 中的条件连接 - 左连接与列选择

通过变量中保存的名称引用 data.table 列