2017-12-29 27 views
0

私は質問にリンクしています: Cumsum excluding current value 特定のcustomer.idを除いてcumsumを適用する方法?例えば:いくつかの行を除いたカムム

Fruits <- Fruits[order(Fruits$order.id), ] #sort data 
Fruits$prev_Apples<-with(Fruits, 
    ave(
     ave(Apples, customer.id, FUN=function(x) c(0, head(cumsum(x), -1))), #get running sum per customer.id 
     interaction(customer.id, order.id, drop=T), 
    FUN=max, na.rm=T) #find largest sum per index per seg 
) 

しかし、私はまた私のCUMSUMのcustomer.idソムコンプから除外する:

order.id customer.id Apples Peaches Pears 
1001  J Car Ltd  1  0  0 
1002  Som Comp  1  2  0 
1005  Richardson  0  0  1 
1004  J Car Ltd  1  0  0 
1003  J Car Ltd  2  0  0 
1006  Richardson  1  0  1 
1007  Aldridge  0  0  1 
1008  J Car Ltd  0  0  1 
1010  Som Comp  0  1  0 

私は、以前のリンゴの注文を追跡するためにCUMSUMを適用したいです。彼にとって、私は0に等しくなるようにprev_Apples列をしたい:

order id customer id Apples Peaches Pears Prev_Apples 
1001  J Car Ltd   1  0  0  0 
1002  Som Comp  **1**  2  0  0 
1003  J Car Ltd   2  0  0  1 
1004  J Car Ltd   1  0  0  3 
1005  Richards   0  0  1  0 
1006  Richards   1  0  1  0 
1007  Aldridge   0  0  1  0 
1008  J Car Ltd   0  0  1  4 
1010  Som Comp   1  0  0  **0** 

だから私はこのコード行を追加するために考えた:

if(Fruits$customer id =='NULL'){ 
Prev_Apples = 0 
return (Fruits$customer id) 
} 

しかし、もちろん、私はエラーを取得する: 「条件を長さ> 1で、最初の要素のみが使用されます。 "

私はエラーがなぜ発生するのか理解しましたが、どうすれば避けることができますか?前もって感謝します。

+0

いつからコードスニペットを実行していたのですか? – InfiniteFlashChess

答えて

0

あなたはApples列の現在の値を減算するのを忘れてしまいました。コードを使用してprev_Applesを計算した後、次のコードが機能するはずです。

Fruits$prev_Apples <- Fruits$prev_Apples - Fruits$Apples 
Fruits[which(Fruits$customer.id == "Som Comp"), ]$prev_Apples <- 0 
# order.id customer.id Apples Peaches Pears prev_Apples 
# 1  1001 J Car Ltd  1  0  0   0 
# 2  1002 Som Comp  1  2  0   0 
# 5  1003 J Car Ltd  2  0  0   1 
# 4  1004 J Car Ltd  1  0  0   3 
# 3  1005 Richardson  0  0  1   0 
# 6  1006 Richardson  1  0  1   0 
# 7  1007 Aldridge  0  0  1   0 
# 8  1008 J Car Ltd  0  0  1   4 
# 9  1010 Som Comp  0  1  0   0 
+0

確かに、私はそれを忘れてしまった。今私は私の質問を編集した、あなたの正しい答えをありがとう! – gmt

関連する問題