Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R获取一组行的平均列值_R - Fatal编程技术网

使用R获取一组行的平均列值

使用R获取一组行的平均列值,r,R,我试图得到某一行范围内某一列的平均值。例如,假设: data.frame(x=c(.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9)) 我想要一个新数据帧中第1-3行、第4-6行和第7-9行的平均值,如下所示: data.frame(x=c(0.2, 0.5, 0.8) 但是,我有超过15000行,并且希望为每列每次取20行的平均值。有什么好办法吗?我认为使用colMeans()的子集做一些事情是最好的,但我在R方面是个新手 谢谢大家! 这里有一种使用.colMeans(

我试图得到某一行范围内某一列的平均值。例如,假设:

data.frame(x=c(.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9))
我想要一个新数据帧中第1-3行、第4-6行和第7-9行的平均值,如下所示:

data.frame(x=c(0.2, 0.5, 0.8)
但是,我有超过15000行,并且希望为每列每次取20行的平均值。有什么好办法吗?我认为使用colMeans()的子集做一些事情是最好的,但我在R方面是个新手


谢谢大家!

这里有一种使用
.colMeans()
的方法,它提供您想要的输出

dat <- data.frame(x=c(.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9))
> .colMeans(x = dat$x, m = 3, n = nrow(dat)/3, na.rm = T )
[1] 0.2 0.5 0.8
这比d.b.提出的方法快一点:

> tic()
> w2 <- aggregate(. ~ grp, transform(dat, grp = ceiling(seq_along(x)/3)), mean)
> toc()
0.1 sec elapsed
tic() >w2总有机碳() 0.1秒过去了
聚合(.~grp,transform(d,grp=天花板(沿(x)/3)的顺序)),平均值)
其中
d
是您的
数据。框架
> tic()
> w2 <- aggregate(. ~ grp, transform(dat, grp = ceiling(seq_along(x)/3)), mean)
> toc()
0.1 sec elapsed