在dplyr中,有没有办法使用group_by()而不是变量,而是使用特定行数的组?我正在使用SQLite和dplyr,我不认为SQLite有窗口函数。
答案 0 :(得分:2)
您只想动态分组,这意味着将 ad hoc 变量传递给分组器。
在data.table
中,可以使用rep
中的by
完成此操作:
library(data.table)
set.seed(01394)
DT <- data.table(VAR = rnorm(2520))
DT[ , mean(VAR), by = rep(1:18, each = 140)]
# rep V1
# 1: 1 0.029683200
# 2: 2 0.150411987
# 3: 3 0.061912697
# 4: 4 -0.014229183
# 5: 5 -0.007305455
# 6: 6 0.003784550
# 7: 7 0.010941501
# 8: 8 0.032129151
# 9: 9 -0.036524921
# 10: 10 0.046986451
# 11: 11 0.075547228
# 12: 12 -0.079538420
# 13: 13 -0.099833001
# 14: 14 -0.065297462
# 15: 15 -0.020778063
# 16: 16 0.095983764
# 17: 17 0.095292230
# 18: 18 0.150405148
根据@docendodecimus,dplyr
等价物是:
DT %>% group_by(g = rep(1:18, each = 140)) %>% summarise(m = mean(VAR))