data.tableの特定の列の値の総和と正味の合計を取得したいとします。この例ではa
のために、ネット合計は4で、総合計は、私はこのように、追加の列を追加することによってそれを行うことができます。5.総計と総計の両方をdata.tableの列から取得するR
>dt = data.table(id = c("a","a","a","b","b","b","b","c","c"),value = c(-1,2,3,-3,4,-2,3,-1,1))
>head(dt,3)
id value
1: a -1
2: a 2
3: a 3
になるように、総合計では、私は、負の値を無視した意味します:
>dt$grossValue = dt$value
>dt$grossValue[dt$grossValue < 0] = 0
>dt[,.(netTotal = sum(value),grossTotal= sum(grossValue)),by=id]
id netTotal grossTotal
1: a 4 5
2: b 2 7
3: c 0 1
しかし、私は実際に数百万行があるので、データへの余分な列を追加する必要がしたくない、と私は複数のカラムにこれを実行したい場合があります。それを直接行う方法はありますか?総額または純額の合計を得る方法を把握することができます(にvalue > 0
を追加することによって総額を得る)が、同時に両方ではありません。
を掛ける代わりのサブセットでしたはい、それはまさにそれです。相対的にRに慣れておらず、このイディオムに精通していない。ありがとう。 –