Предположим, у меня есть следующий 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
для 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
Спасибо большое!