0
私はRが新しく、顧客が以前に注文したアイテムを累積的に合計する関数を作成しようとしています。 Stack Overflowでコードの例を見てきましたが、必要に応じて変更することはできません。現在の値を除いた華氏
これはコードです:
Fruits <- Fruits[order(Cars$order.id), ] #sort data
Fruits$prev_Apples<-with(Fruits,
ave(
ave(Apples, customer.id, FUN=cumsum), #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
)
そして、これは、果物のdata.frameです:
order.id customer.id \t Apples \t Peaches Pears
1001 \t J Car Ltd \t 1 \t 0 \t 0
1002 \t Som Comp \t 0 \t 2 \t 0
1005 \t Richardson \t 0 \t 0 \t 1
1004 \t J Car Ltd \t 1 \t 0 \t 0
1003 \t J Car Ltd \t 2 \t 0 \t 0
1006 \t Richardson \t 1 \t 0 \t 1
1007 \t Aldridge \t 0 \t 0 \t 1
1008 \t J Car Ltd \t 0 \t 0 \t 1
1010 \t Som Comp \t 0 \t 1 \t 0
1009 \t J Car Ltd \t 1 \t 0 \t 0
これは私がどうなるかであります取得したい:
order id \t customer id \t Apples \t Peaches \t Pears \t Prev_Apples
1001 \t J Car Ltd \t 1 \t 0 \t 0 \t 0
1002 \t Som Comp \t 0 \t 2 \t 0 \t 0
1003 \t J Car Ltd \t 2 \t 0 \t 0 \t 1
1004 \t J Car Ltd \t 1 \t 0 \t 0 \t 3
1005 \t Richardson \t 0 \t 0 \t 1 \t 0
1006 \t Richardson \t 1 \t 0 \t 1 \t 0
1007 \t Aldridge \t 0 \t 0 \t 1 \t 0
1008 \t J Car Ltd \t 0 \t 0 \t 1 \t 4
1009 \t J Car Ltd \t 1 \t 0 \t 0 \t 4
1010 \t Som Comp \t 0 \t 1 \t 0 \t 0
そして、これは私が実際に得るものです:
order id \t customer id \t Apples \t Peaches \t Pears \t Prev_Apples
1001 \t J Car Ltd \t 1 \t 0 \t 0 \t 1
1002 \t Som Comp \t 0 \t 2 \t 0 \t 0
1003 \t J Car Ltd \t 2 \t 0 \t 0 \t 3
1004 \t J Car Ltd \t 1 \t 0 \t 0 \t 4
1005 \t Richardson \t 0 \t 0 \t 1 \t 0
1006 \t Richardson \t 1 \t 0 \t 1 \t 1
1007 \t Aldridge \t 0 \t 0 \t 1 \t 0
1008 \t J Car Ltd \t 0 \t 0 \t 1 \t 4
1009 \t J Car Ltd \t 1 \t 0 \t 0 \t 5
1010 \t Som Comp \t 0 \t 1 \t 0 \t 0
だから、問題はCUMSUMもの現在の順序が含まれていることですアップル、それ以前の注文だけを含めることを望みます。コードをどのように変更すればよいですか?どんな答えも高く評価されます。
私は本当にあなたのデータで何が起こっているのかわかりません - 列のスペース。名前が難しい。 'dput()'と共有できますのでコピーペースト可能ですか? (また、スニペットを使わないでください - Rで動作しません)。 – Gregor
最初の項が0で最後の項が省略されている 'cumsum'が必要なようです。 'FUN = function(x)c(0、head(cumsum(x)、-1))'を試してください。 – Gregor
ありがとう、本当にありがとう! – gmt