2016-07-27 81 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