语言:R
包:data.table
当我使用data.table“by”对几列进行分组来计算时,假设每组中的观察数,如果组合的条目为零,则它不会显示在输出中。但是,即使它是空的,我仍然希望看到(为零)。有没有办法做到这一点?
# Example:
DT = data.table(A = c(1,1,1,1,2,2,2), B = c(F,F,T,F,T,T,T))
A B
1: 1 FALSE
2: 1 FALSE
3: 1 TRUE
4: 1 FALSE
5: 2 TRUE
6: 2 TRUE
7: 2 TRUE
DT[, j = .(.N), by = .(A,B)]
A B N
1: 1 FALSE 3
2: 1 TRUE 1
3: 2 TRUE 3
如上所示,A中的因子2在B列中没有相应的F观察值。因此,当使用data.table分组时,此条目将不会显示。
编辑:
事实证明,之前有人提出并回答了类似的问题。
setkey(DT, A, B)
DT[CJ(A,B, unique = TRUE), j= .(.N), by= .EACHI]
A B N
1: 1 FALSE 3
2: 1 TRUE 1
3: 2 FALSE 0
4: 2 TRUE 3