【问题标题】:R - Calculating mean of values in data frame column cycling through pre-determined intervalsR - 计算通过预定间隔循环的数据框列中的值的平均值
【发布时间】:2019-12-20 14:36:09
【问题描述】:

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

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 移动平均线实现的文档,但(因为我肯定)我不确定实现目标的最佳/正确方法。

【问题讨论】:

  • 能否提供您的数据样本 (dput(data)) 和预期输出,以便我们知道您到底在寻找什么?
  • 不知道你想要在没有数据或预期输出的数据帧上的平均值是多少......你能提供更多细节吗?
  • 谢谢,希望能说清楚

标签: r dataframe average moving-average


【解决方案1】:

这是一个基本的 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2021-02-08
    • 2021-11-25
    • 2017-12-04
    • 2021-02-02
    • 1970-01-01
    • 2019-11-10
    相关资源
    最近更新 更多