我试图向前滚动的值用dplyr
的mutate()
和lag()
我想下面的代码,使其工作。 相反,它的工作,我希望它,我得到了零点BegFund
列第一行之后。 我已经尝试使用data.table shift()
没有运气,并stats::lag()
没有运气也是如此。 有人有想法么?
下面就是我试图做的一个简单的例子。 再现当我测试。
library(dplyr) # 0.4.3
payments <- 1:10
fund.start <- 1000
payment.percent <- .05
fund.value <- data.frame(payments)
fund.value <- fund.value %>%
transmute(Payment = payments) %>%
mutate(EndFund = 0) %>%
mutate(BegFund = ifelse(Payment == 1, fund.start, lag(EndFund, 1)),
PmtAmt = BegFund * payment.percent,
EndFund = BegFund - PmtAmt) %>%
select(Payment, BegFund, PmtAmt, EndFund)
head(fund.value)
编辑:下面是我想摆脱的R这个输出。 请原谅可怕的格式,我在此很新。
Payment BegFund PmtAmt EndFund
1 1000 50 950
2 950 47.5 902.5
3 902.5 45.125 857.375
4 857.375 42.86875 814.50625
5 814.50625 40.7253125 773.7809375
6 773.7809375 38.68904688 735.0918906