基于给定标准的总和

时间:2016-07-27 10:27:45

标签: r loops

我有以下数据集:

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,那么我需要忽略这些行。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

我要创建另一个列

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

那么这很容易

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

它正在做你需要的吗?