1
값을 집계하는 데 data.table을 사용하고 있지만, "by"변수가 집계에없는 레벨을 가지면 지정되어 있어도 생략됩니다. 요인 수준에서.집계 중에 빈 팩터 레벨을 유지하십시오.
아래 코드는 6 행의 data.table을 생성하며, 마지막 두 개는 f1 내에 중첩 된 f2의 두 가지 가능한 수준 중 하나만 가지고 있습니다. 집계 중에 {3,1} 조합이 삭제됩니다.
set.seed(1987)
dt <- data.table(f1 = factor(rep(1:3, each = 2)),
f2 = factor(sample(1:2, 6, replace = TRUE)),
val = runif(6))
str(dt)
Classes ‘data.table’ and 'data.frame': 6 obs. of 3 variables:
$ f1 : Factor w/ 3 levels "1","2","3": 1 1 2 2 3 3
$ f2 : Factor w/ 2 levels "1","2": 1 2 2 1 2 2
$ val: num 0.383 0.233 0.597 0.346 0.606 ...
- attr(*, ".internal.selfref")=<externalptr>
dt
f1 f2 val
1: 1 1 0.3829077
2: 1 2 0.2327311
3: 2 2 0.5965087
4: 2 1 0.3456710
5: 3 2 0.6058819
6: 3 2 0.7437177
dt[, sum(val), by = list(f1, f2)] # output is missing a row
f1 f2 V1
1: 1 1 0.3829077
2: 1 2 0.2327311
3: 2 2 0.5965087
4: 2 1 0.3456710
5: 3 2 1.3495996
# this is the output I'm looking for:
f1 f2 V1
1: 1 1 0.3829077
2: 1 2 0.2327311
3: 2 2 0.5965087
4: 2 1 0.3456710
5: 3 1 0.0000000 # <- the missing row from above
6: 3 2 1.3495996
이 동작을 수행하는 방법이 있습니까?
다른 기능에서 보았 기 때문에이 동작이 예상됩니다. 예 :'table (dt $ f1, dt $ f2)'는 모든 조합에 대한 결과를 생성합니다. –