私はdata.table
に日付、郵便番号、および購入金額を記載しています。別の列とグループの値に基づいて新しいdata.table列を作成する
library(data.table)
set.seed(88)
DT <- data.table(date = Sys.Date()-365 + sort(sample(1:100, 10)),
zip = sample(c("2000", "1150", "3000"),10, replace = TRUE),
purchaseAmount = sample(1:20, 10))
これは、次のように作成されます。
date zip purchaseAmount
1: 2016-01-08 1150 5
2: 2016-01-15 3000 15
3: 2016-02-15 1150 16
4: 2016-02-20 2000 18
5: 2016-03-07 2000 19
6: 2016-03-15 2000 11
7: 2016-03-17 2000 6
8: 2016-04-02 1150 17
9: 2016-04-08 3000 7
10: 2016-04-09 3000 20
私は4列目earlierPurchases
を追加したいと思います。この列は、前のxdate
のzipcode
の中のpurchaseAmount
のすべての値がsum
である必要があります。
EDIT:フランクからの提案を1として、ここで予想される出力です:
date zip purchaseAmount new_col
1: 2016-01-08 1150 5 5
2: 2016-01-15 3000 15 15
3: 2016-02-15 1150 16 16
4: 2016-02-20 2000 18 18
5: 2016-03-07 2000 19 19
6: 2016-03-15 2000 11 30
7: 2016-03-17 2000 6 36
8: 2016-04-02 1150 17 17
9: 2016-04-08 3000 7 7
10: 2016-04-09 3000 20 27
これを行うにはdata.table
方法はありますか、私はちょうどループfunction
を書くべきですか?
下記のコメントを参考にしてください。これは入力と予想出力の両方を送信することを推奨しているため、単に質問を読むことで回答が希望の結果を達成するかどうかは明らかです。ここにいくつかのガイダンスがあります:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/28481250#28481250それを編集するのは遅すぎることはありません。 – Frank
ガイダンスとコードを編集していただきありがとうございます@フランク。私は質問への出力を編集し、ビネットを読んで、あなたの解決策をよりよく理解するでしょう。これがフォーラムの最初の質問だったので、あなたは答えと提案を提供した丁寧で有益な方法を本当に感謝します。 – Mantelimies