在dplyr中使用group_by()一定数量的行

时间:2016-02-23 02:20:23

标签: r sqlite dplyr

在dplyr中,有没有办法使用group_by()而不是变量,而是使用特定行数的组?我正在使用SQLite和dplyr,我不认为SQLite有窗口函数。

1 个答案:

答案 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))