R 如何将非零值分配到第一个零值

R 如何将非零值分配到第一个零值,r,assign,R,Assign,我有个人在R中的发票和付款信息: 也许您知道这样做的最佳方法?如果您以前的值为0,需要用第一个非零值覆盖,那么这里有一个建议: dt$Payment2我真的很难弄清楚如何从你拥有的数据中获取你想要的数据。用什么算法来寻找一个合适的零的替代品? dt <- data.frame(Date = seq.Date(as.Date("2020-01-01"), by = "month", length.out = 9), I

我有个人在R中的发票和付款信息:


也许您知道这样做的最佳方法?

如果您以前的值为0,需要用第一个非零值覆盖,那么这里有一个建议:


dt$Payment2我真的很难弄清楚如何从你拥有的数据中获取你想要的数据。用什么算法来寻找一个合适的零的替代品?
dt <- data.frame(Date = seq.Date(as.Date("2020-01-01"), by = "month", length.out = 9),
                 Invoice = c(9, 9, 9, 10, 10, 10, 10, 10, 10),
                 Payment = c(0, 9, 9, 0, 0, 25, 10, 13, 20))
   Invoice_date Invoice_amount Payment_date Payment_amount
1    2020-01-01              9   2020-02-01              9 (The 2nd month payment assigned to 1st month)
2    2020-02-01              9   2020-03-01              9 (The 3rd month payment assigned to 2nd month)
3    2020-03-01              9   2020-06-01              9 (original payment - 25, the 6th month payment assigned to 3rd month)
4    2020-04-01             10   2020-06-01             10 (original payment - 25, the 6th month payment assigned to 4th month)
5    2020-05-01             10   2020-06-01              6 (original payment - 25, the 6th month payment assigned to 5th month)
6    2020-05-01             10   2020-07-01             10
7    2020-06-01             10   2020-08-01             10 (original payment - 13)
8    2020-07-01             10   2020-08-01              3 (original payment - 13)
9    2020-07-01             10   2020-09-01              7 (original payment - 20)
10   2020-08-01             10   2020-09-01             10 (original payment - 20)
11   2020-09-01             10   2020-09-01              3 (original payment - 20)