我有一组数据(成本和距离)我想根据距离聚合那些 ns 类并找到聚合数据的成本总和。

下面是一些示例表。

Nam Cost    distance
1   1005    10
2   52505   52
3   51421   21
4   651     10
5   656     0
6   5448    1

类(class)
   Class From   To
        1   0   5
        2   5   15
        3   15  100

结果
Class   Sum
    1   6104
    2   1656
    3   103926

我正在这样做,但需要很多时间来处理。我确定有更好的方法来做到这一点
for (i in 1:6)
{
  for (j in 1:3)
  {
    if((Table_numbers[i,3]<=classes[j,2])& (Table_numbers[i,3]<classes[j,3]))
    {
      result_table[j,2]<-result_table[j,2]+ Table_numbers [i,2]
    }

  }

}

我也使用了 classIntervals,但是对于每个类,我都会得到距离的计数,但我需要成本的总和。

我也尝试使用 group_by 但我不知道是否可以使用类进行分组。

你知道我怎样才能更有效地做到这一点吗?

最佳答案

这是结合 findIntervaltapply 的简单基本解决方案

tapply(Table$Cost, findInterval(Table$distance, c(0, Classes$To)), sum)
#    1      2      3
# 6104   1656 103926

如果类名称可能不同(不仅仅是计数器),您可以修改为
tapply(Table$Cost, Classes$Class[findInterval(Table$distance, c(0, Classes$To))], sum)

关于r - 在 r 和 sum 值中创建类间隔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34653577/

10-12 22:58