比方說,我們有兩個表:R,在反向
預算的表:
Item Budget
A 900
B 350
C 100
D 0
bDT = structure(list(Item = c("A", "B", "C", "D"), Budget = c(900L,
350L, 100L, 0L)), .Names = c("Item", "Budget"), row.names = c(NA,
-4L), class = "data.frame")
,並通過每個日期項的預計費用表。
Item Date Expense
A 2017-08-24 850
B 2017-08-18 300
B 2017-08-11 50
C 2017-08-18 50
C 2017-08-11 100
D 2017-08-01 500
expDF = structure(list(Item = c("A", "B", "B", "C", "C", "D"), Date = structure(c(17402,
17396, 17389, 17396, 17389, 17379), class = "Date"), Expense = c(850L,
300L, 50L, 50L, 100L, 500L)), .Names = c("Item", "Date", "Expense"
), row.names = c(NA, -6L), class = "data.frame")
我期待總結我們可以爲每個項目花費每日期這樣的量:
Item Date Spend
A 8/24/2017 850
B 8/18/2017 300
B 8/11/2017 50
C 8/18/2017 50
C 8/11/2017 50
D 8/1/2017 0
Fyi,如果你使用'Date'類的列並且提供代碼很容易就可以再現這個例子,那麼每個人都會更好/更容易。有關指導,請參閱https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/28481250#28481250。 – Frank
我不明白這與累計求和有什麼關係。但我不明白結果如何產生的邏輯。爲什麼'D'0? – Gregor
@Gregor這就像'預算 - cumsum(data.table :: shift(Expense,type =「lead」))',我猜,顯示在當前費用之前的預算金額。嗯,不,這兩種方法都不太合適,因爲兩個C都是50,好吧,我迷路了......也許是這樣,再加上'pmax'或'pmin'的地方。 – Frank