次のものがあるとしますdata.table
。
dt <- data.table(id = c(rep(1, 5), rep(2, 4)),
sex = c(rep("H", 5), rep("F", 4)),
fruit = c("apple", "tomato", "apple", "apple", "orange", "apple", "apple", "tomato", "tomato"),
key = "id")
id sex fruit
1: 1 H apple
2: 1 H tomato
3: 1 H apple
4: 1 H apple
5: 1 H orange
6: 2 F apple
7: 2 F apple
8: 2 F tomato
9: 2 F tomato
各行は、誰か ( と で識別される) が を食べたという事実をid
表しsex
ますfruit
。fruit
それぞれが に食べられた回数を数えたいsex
。私はそれを行うことができます:
dt[ , .N, by = c("fruit", "sex")]
これにより、次のことが得られます。
fruit sex N
1: apple H 3
2: tomato H 1
3: orange H 1
4: apple F 2
5: tomato F 2
問題は、このようにすることでorange
forのカウントが失われることですsex == "F"
。これは、このカウントが 0 であるためです。ゼロ カウントの組み合わせを失わずにこの集計を行う方法はありますか?
完全に明確にするために、望ましい結果は次のようになります。
fruit sex N
1: apple H 3
2: tomato H 1
3: orange H 1
4: apple F 2
5: tomato F 2
6: orange F 0
どうもありがとう !