編集:この問題は、古いバージョンのdata.tableがインストールされていることが原因でした。
私は次のようなdata.tableを持っています:
require(xts)
a <- data.table(colour=c("Red","Green","Blue","Blue","Black","Black"), date=c(as.Date("2011-07-04"),as.Date("2011-07-10"),as.Date("2011-07-09"),as.Date("2011-07-12"),as.Date("2011-07-04"),as.Date("2011-07-09")),daily.quantity=c(1,-1,2,-2,1,1))
colour date daily.quantity
[1,] Red 2011-07-04 1
[2,] Green 2011-07-10 -1
[3,] Blue 2011-07-09 2
[4,] Blue 2011-07-12 -2
[5,] Black 2011-07-04 1
[6,] Black 2011-07-09 1
色ごとの累積合計を次のようにしたいと思います。
colour date daily.quantity cumulative.quantity
[1,] Black 2011-07-04 1 1
[2,] Black 2011-07-09 1 2
[3,] Blue 2011-07-09 2 2
[4,] Blue 2011-07-12 -2 0
[5,] Green 2011-07-10 -1 -1
[6,] Red 2011-07-04 1 1
ただし、次のことを試してみると、色を考慮しない累積合計になります。
setkey(a,colour,date)
a[,cumulative.quantity := cumsum(daily.quantity)]
colour date daily.quantity cumulative.quantity
[1,] Black 2011-07-04 1 1
[2,] Black 2011-07-09 1 2
[3,] Blue 2011-07-09 2 4
[4,] Blue 2011-07-12 -2 2
[5,] Green 2011-07-10 -1 1
[6,] Red 2011-07-04 1 2
私は明白なことを試みましたが、残念ながら実装されていません:
> a[,cumulative.quantity := cumsum(daily.quantity),keyby="colour,date"]
Error in `[.data.table`(a, , `:=`(cumulative.quantity, cumsum(daily.quantity)), :
Combining := in j with by is not yet implemented. Please let maintainer('data.table') know if you are interested in this.
だから、誰かがこれの回避策を提案できますか?