r - 如何在 dplyr 中按固定数量的行分组?
问题描述
我有一个数据框:
set.seed(123)
x <- sample(10)
y <- x^2
my.df <- data.frame(x, y)
结果是这样的:
> my.df
x y
1 3 9
2 8 64
3 4 16
4 7 49
5 6 36
6 1 1
7 10 100
8 9 81
9 2 4
10 5 25
我想要的是按每n行对行进行分组,以计算 5 个选定行的平均值、总和或其他值。对于n=5是这样的:
my.df %>% group_by(5) %>% summarise(sum = sum(y), mean = mean(y))
预期的输出将类似于:
# A tibble: 1 x 2
sum mean
<dbl> <dbl>
1 174 34.8
2 211 42.2
当然,数据框中的行数可以是 15、20、100 等等。我仍然想每n行对数据进行分组。
我怎样才能做到这一点?
解决方案
我们可以使用rep
orgl
来创建分组变量
library(dplyr)
my.df %>%
group_by(grp = as.integer(gl(n(), 5, n()))) %>%
#or with rep
# group_by(grp = rep(row_number(), length.out = n(), each = 5))
summarise(sum = sum(y), mean = mean(y))
# A tibble: 2 x 3
# grp sum mean
# <int> <dbl> <dbl>
#1 1 174 34.8
#2 2 211 42.2
推荐阅读
- php - 表格倒数第二列内的下拉菜单不起作用
- javascript - SequelizeDatabaseError:删除不存在的 ENUM 类型,但它们确实存在
- amazon-web-services - 为什么 Dash 应用程序无法在 AWS Cloud9 中预览?
- c# - 如何过滤 3 级 wpf 树视图
- python-3.x - 如何在python中安装sympy包
- c# - 根据条件调用方法的更好方法
- r - 我正在尝试从 R Markdown 创建 word 文档。但 toc:TRUE 选项抛出错误
- flutter - 如何用颤振的 URL_launcher 包发送短信?
- gridview - Flutter 复用视图
- amazon-web-services - aws cli中的eb setenv等价物是什么?