如何显式命名.N函数生成的计数列?

问题描述 投票:1回答:2

我希望按id列对数据表进行分组,然后计算每个id出现的次数。这可以按如下方式完成:

dt <- data.table(id =  c(1, 1, 2))
dt_by_id <- dt[, .N, by = id] 

dt_by_id
   id N
1:  1 2
2:  2 1

这很好,但我希望N柱有不同的名称(例如count)。在帮助中它说:

.N是一个整数,长度为1,包含组中的行数。当事先不知道列名并且为了方便起见时,这可能是有用的。当按i分组时,.N是x匹配的行数,对于i的每一行,无论nomatch是NA还是0.它在结果中重命名为N(无点)(否则称为“ .N“可能与.N变量冲突,请参阅FAQ 4.6以获取更多详细信息和示例),除非明确命名; ......

如何在创建dt_by_id数据表时“明确命名”N列? (我知道如何重命名它。)我试过了

dt_by_id <- dt[, count = .N, by = id]

但这导致了

Error in `[.data.table`(dt, , count = .N, by = id) : 
  unused argument (count = .N)
r group-by data.table
2个回答
3
投票

如果要提供自己的名称,则必须列出计算的输出:

dt[, .(count=.N), by = id]

如果您愿意,这与dt[, list(count=.N), by = id]相同; .list的别名。


0
投票

如果我们已经命名它,那么使用setnames

setnames(dt_by_id, "N", 'count')

或使用rename

library(dplyr)
dt_by_id %>%
   rename(count = N)
#  id count
#1:  1     2
#2:  2     1
© www.soinside.com 2019 - 2024. All rights reserved.