#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())