R - 计算通过预定间隔循环的数据框列中值的平均值

R - Calculating mean of values in data frame column cycling through pre-determined intervals

从如下所示的两列数据框开始:

value - distance (km)
10  1.2
9.5 1.7
10  4
9.5 6.5
10  7
10  7
10  7.6
8.5 11.6
9.5 11.7
8.5 14.8
9   15.2
9   15.3
8.5 17.4
8   17.8
7   21.2
4   24.6

[...]

我必须计算左列值的几个平均值,而右列的值在 10 公里的预定范围之间: 0 到 10 公里之间的平均值、5 到 15 公里、10 到 20 公里之间的平均值等等。 类似于预定义间隔内的移动平均线,部分重叠。 输出应类似于以下内容:

9.86 (the average of 0 km <= values < 10 km)
9.43 (... 5 km <= values < 15 km)
8.71 (... 10 km <= values < 20 km)
[...]
avgX (... 40 km <= values < 50 km)

我正在查看不同 R 移动平均线实现的文档,但是(肯定是因为我)我不确定 best/right 实现我的目标的方法。

这是一个基本的 R 解决方案,您可以尝试下面的代码:

res <- sapply(seq(0,max(df$distance),by=5),function(k) mean(subset(df, distance >= k & distance < k+10)$value))

这样

> res
[1] 9.857143 9.428571 8.714286 7.583333 5.500000

数据

df <- structure(list(value = c(10, 9.5, 10, 9.5, 10, 10, 10, 8.5, 9.5, 
8.5, 9, 9, 8.5, 8, 7, 4), distance = c(1.2, 1.7, 4, 6.5, 7, 7, 
7.6, 11.6, 11.7, 14.8, 15.2, 15.3, 17.4, 17.8, 21.2, 24.6)), class = "data.frame", row.names = c(NA, 
-16L))