我有一个数据表dt
:
library(data.table)
dt = data.table(a=LETTERS[c(1,1:3)],b=4:7)
a b
1: A 4
2: A 5
3: B 6
4: C 7
dt[, .N, by=a]
的结果是
a N
1: A 2
2: B 1
3: C 1
我知道by=a
或by="a"
表示按a
列分组,而N
列是a
的重复次数之和。但是,我没有使用nrow()
,但我得到了结果。 .N
不只是列名吗?我在R中??".N"
找不到该文档。我尝试使用.K
,但它不起作用。 .N
的含义是什么?
答案 0 :(得分:19)
将.N
视为实例数的变量。例如:
dt <- data.table(a = LETTERS[c(1,1:3)], b = 4:7)
dt[.N] # returns the last row
# a b
# 1: C 7
您的示例返回一个新变量,其中包含每个案例的行数:
dt[, new_var := .N, by = a]
dt
# a b new_var
# 1: A 4 2 # 2 'A's
# 2: A 5 2
# 3: B 6 1 # 1 'B'
# 4: C 7 1 # 1 'C'
有关data.table的所有特殊符号的列表,另请参阅https://www.rdocumentation.org/packages/data.table/versions/1.10.0/topics/special-symbols