2016-07-27 49 views
1

,我有以下数据集:总和基于给定的标准

Min Max PFQty SFQty 
800 900 0  0 
800 900 0 0 
800 900 30 30 
800 1000 0 0 
800 1000 42 42 
900 1000 0 0 
900 1000 0 0 
900 1000 150 150 
900 1000 0 0 
900 1000 0 0 
900 1000 0 0 
900 1000 40 40 
900 1000 14 14 
900 1000 28 28 
900 1000 14 14 
900 1000 56 56 
900 1000 120 120 
900 1000 60 60 
900 1000 1512 1512 
900 1000 1096 1096 
900 1100 24 24 
1000 1100 9 9 
1000 1100 60 60 
1000 1100 250 250 
1000 1100 435 435 

我需要总结列PFQty只能做到列MinMax 100之间的区别。如果它超过100,那么我需要忽略这些行。

+1

也许'总和(是myDF [myDF上$最大的一个选项 - 是myDF $闵<= 100 ,“PFQty”])'? – zx8754

+0

没有结果是所有地方的差额是100的总和。相反,我需要总计800-900,900-1000,... – user6016731

回答

2

使用dplyr,过滤,然后按与总和:

library(dplyr) 
df1 %>% 
    filter(Max - Min <= 100) %>% 
    group_by(Min, Max) %>% 
    summarise(PFQtySum = sum(PFQty)) 

#  Min Max PFQtySum 
# <int> <int> <int> 
# 1 800 900  30 
# 2 900 1000  3090 
# 3 1000 1100  754 
0

我想创建另一列

data$diff<-abs(data$min-data$max) 

那么这将是容易

sum(data[diff<=100,]$PFQty) 

它在干什么,你需要什么?

+0

我已经这样做了,但结果不会是我想要的。我需要将数据拆分为班级间隔和相应的总和旁边说800-900 30 900-1000 3090 ... – user6016731

+0

所以你想分类的差异,然后根据差异的价值总结列? –

1

这里使用data.table

library(data.table) 
setDT(df1)[Max - Min <= 100, .(PFQtySum = sum(PFQty)) , by = .(Min, Max)] 
# Min Max PFQtySum 
#1: 800 900  30 
#2: 900 1000  3090 
#3: 1000 1100  754