R 合并流动支付以获得每日余额
我正在处理R 合并流动支付以获得每日余额,r,data.table,R,Data.table,我正在处理数据。table尝试合并两条信息: 指定账户每天的交易清单 每个账户在共同的已知日期的余额 所以我手中的物品可以归结为: dt<-data.table(id=c(1,2,3,3,3,3), posting=as.Date(c("2013-12-24","2013-10-09", "2013-12-22","2013-12-10",
数据。table
尝试合并两条信息:
dt<-data.table(id=c(1,2,3,3,3,3),
posting=as.Date(c("2013-12-24","2013-10-09",
"2013-12-22","2013-12-10",
"2013-11-12","2013-10-09")),
balance_change=c(-57,-150,-145,-145,-145,-145),
total_due=c(57,1570,11255,11255,11255,11255),
key=c("id","posting"))
到期总额
列包括截至2013-11-05的所有付款
我想以最简单的方式创建余额在_日期
列(为每个日期提供交易过账前的余额);我目前的解决方案相当长,所以我现在不包括它。最终目标是:
id posting balance_change total_due balance_at_date
1: 1 2013-12-24 -57 57 57
2: 2 2013-10-09 -150 1570 1720
3: 3 2013-10-09 -145 11255 11400
4: 3 2013-11-12 -145 11255 11255
5: 3 2013-12-10 -145 11255 11105
6: 3 2013-12-22 -145 11255 10960
最好的方法是什么
dt[posting>as.Date("2013-11-05"),
balance_t:=cumsum(balance_change)-balance_change+total_due,by=id]
setorder(dt,id,-posting)
dt[posting<=as.Date("2013-11-05"),
balance_t:=cumsum(-balance_change)+total_due,by=id]
setorder(dt,id,posting)
编辑
以下是我目前正在做的事情;难道没有更好的办法吗
dt[posting>as.Date("2013-11-05"),
balance_t:=cumsum(balance_change)-balance_change+total_due,by=id]
setorder(dt,id,-posting)
dt[posting<=as.Date("2013-11-05"),
balance_t:=cumsum(-balance_change)+total_due,by=id]
setorder(dt,id,posting)
dt[过账>截止日期(“2013-11-05”),
余额t:=cumsum(余额变化)-余额变化+到期总额,by=id]
setorder(dt,id,-过帐)
dt[postingSee无法使用数据集复制dt操作、键入。应为=
而不是:=
;fixed@G.Grothendieck你能解释一下吗?我没有看到确切的相似之处,尽管过滤器
功能在我的曲目中很好。真正的问题是tota的日期前后都有付款l_due
是正确的,我没有看到一种简单的方法将其转换为时间序列。请添加您当前的方法,以便其他人不会浪费时间重新创建它。