我有以下数据集:
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
求和,直到列Min
和Max
之间的差异为100。如果它超过100,那么我需要忽略这些行。
答案 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)
它正在做你需要的吗?