Количество комбинаций факторов

#r #dataframe #data.table

#r #фрейм данных #данные.таблица

Вопрос:

Итак, эта проблема кажется простой, но я не могу ее решить. В принципе, у меня есть следующие данные. структура таблицы:

 dt =data.table(group=sample(c("A","B"),10,replace=T),
fact=sample(c("Q","R","S","v"),10,replace=T))

group   fact
1   B   Q
2   B   S
3   A   S
4   B   S
5   A   Q
6   B   v
7   A   v
8   A   S
9   B   Q
10  A   R
 

Теперь я хотел бы найти количество каждой комбинации group и fact.

 group   fact    V1
1   B   Q     2
2   B   S     2
3   A   S     2
4   B   S     1
5   A   Q     1
6   B   v     1
etc.
 

Кажется, я не могу понять это, используя data.table.
Следующее дает мне только уникальные факторы.

 dt=dt[,length(unique(fact)),by=list(group,fact)]
 

Ответ №1:

Вы можете получить data.frame с

 as.data.frame(table(dt$group, dt$fact))
 

Затем вы можете преобразовать это обратно в data.table и подмножество на Freq!= 0 и т.д.

Или версия data.table с

 dt[,list(freq=.N), by=list(group, fact)]
 

Ответ №2:

Используйте .N так:

 dt[, .N, by=list(group, fact)]
 

Читайте help("data.table") , чтобы узнать о .N нем, и его полезных друзьях.

Ответ №3:

Вот dplyr решение, использующее n() :

 dt %>% group_by(group, fact) %>% summarise(N = n())