我希望按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)
如果要提供自己的名称,则必须列出计算的输出:
dt[, .(count=.N), by = id]
如果您愿意,这与dt[, list(count=.N), by = id]
相同; .
是list
的别名。
如果我们已经命名它,那么使用setnames
setnames(dt_by_id, "N", 'count')
或使用rename
library(dplyr)
dt_by_id %>%
rename(count = N)
# id count
#1: 1 2
#2: 2 1