我有一组数据(成本和距离)我想根据距离聚合那些 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 但我不知道是否可以使用类进行分组。
你知道我怎样才能更有效地做到这一点吗?
最佳答案
这是结合 findInterval
和 tapply
的简单基本解决方案
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/