我的数据集(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
这对于一个时间范围是可以的,但我想一次计算几个 - 有没有办法做到这一点?谢谢!
答案 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()
将该函数映射到任意值范围。