对R值中的列数据求平均值

时间:2016-11-09 16:06:59

标签: r

我的数据集(testdata)安排如下:

           Time    1       2        3
1           0   569.607  557.689   527.353
2           1   569.208  556.697   527.162
3           2   569.278  556.919   528.125
4           3   570.059  555.621   527.158

我需要在特定的时间范围内找到第1,2列和第3列的平均值并将其制成表格。例如,我需要第1列的平均值,其中时间为20-30,然后是40-50,然后是60-70。

为了找到20:30的平均值,我使用了:

 sapply(testdata[testdata$Time %in% c(20:30), ],mean)

导致

Time     1        2         3 
25.5000 570.5897 557.3413 528.5433

这对于一个时间范围是可以的,但我想一次计算几个 - 有没有办法做到这一点?谢谢!

2 个答案:

答案 0 :(得分:2)

如果df是您的数据框,您可以尝试以下操作:

ranges <- list(20:30, 40:50, 60:70)
t(sapply(ranges, function(x) sapply(df[df$Time %in% x,], mean)))

答案 1 :(得分:0)

您可以将其映射到一个函数:

h <- function(x,y){
sapply(testdata[testdata$Time %in% c(x:y), ],mean)

然后您可以轻松地执行h(20,30)或任何您想要的任何内容。

然后,您可以使用purrr::map_chr()将该函数映射到任意值范围。