使用data.table的R中每个因子的频率

时间:2015-05-21 09:36:08

标签: r data.table

我想得到表格中每个因素的频率,我目前的代码是:

frequencies <- dt[,c("Variable"), with=FALSE][
                  ,count := length(Variable), by=Variable][
                  ,list(total = sum(count)), by=Variable]

然而,这似乎是非常低效的,所以我想知道这可以写得更紧凑吗?

由于

更新:

   Variable
1  Yes
2  No
3  Yes
4  No
5  Yes

它应该返回:

No  2
Yes 3

2 个答案:

答案 0 :(得分:4)

您可以使用.N

dt[, .N, by = Variable]
#    Variable N
# 1:      Yes 3
# 2:       No 2

或只是table

dt[, table(Variable)]
# Variable
#  No Yes 
#   2   3 

来自table

的更方便的格式
dt[, as.data.table(table(Variable))]
#    Variable N
# 1:       No 2
# 2:      Yes 3

答案 1 :(得分:2)

因子的summary容易产生不同等级的频率。所以:

myvar = factor(c('Yes','No','Yes','No','Yes')) ; t = summary(myvar)