我有日期,邮编一个data.table
和购买金额。创建基于另一列值的新的R 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
我想补充的第四列earlierPurchases
。此栏应sum
在purchaseAmount
所有数值为zipcode
内以前Xdate
。
编辑:每个建议正如弗兰克,这里是预期的输出:
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
感谢您的指导和编辑代码@Frank。我编辑了这个问题的输出结果,并阅读了这些小插曲,以便更好地理解您的解决方案。由于这是我在论坛上的第一个问题,所以我非常感谢您提供答案和建议的礼貌和有用的方式。 – Mantelimies