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))
从如下所示的两列数据框开始:
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))