使用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