我有以下data.table
:
> dt = data.table(sales_ccy = c("USD", "EUR", "GBP", "USD"), sales_amt = c(500,600,700,800), cost_ccy = c("GBP","USD","GBP","USD"), cost_amt = c(-100,-200,-300,-400))
> dt
sales_ccy sales_amt cost_ccy cost_amt
1: USD 500 GBP -100
2: EUR 600 USD -200
3: GBP 700 GBP -300
4: USD 800 USD -400
我的目标是获取以下
data.table
:> dt
ccy total_amt
1: EUR 600
2: GBP 300
3: USD 700
基本上,我想按货币对所有成本和销售额求和。实际上,此
data.table
具有> 500,000行,因此我希望有一种快速有效的方式将金额总计在一起。您知道实现此目的的快速方法吗?
最佳答案
使用data.table v1.9.6+
(已改进了melt
的版本),该版本可以同时融合到多个列中,
require(data.table) # v1.9.6+
melt(dt, measure = patterns("_ccy$", "_amt$")
)[, .(tot_amt = sum(value2)), keyby = .(ccy=value1)]
关于r - R data.table按多列分组为1列和总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29845401/