【发布时间】:2017-03-24 07:41:19
【问题描述】:
问题基本上是这样的:Aggregate and Weighted Mean in R。
但我希望它使用 data.table 在几列上计算它,因为我有数百万行。所以是这样的:
set.seed(42) # fix seed so that you get the same results
dat <- data.frame(assetclass=sample(LETTERS[1:5], 20, replace=TRUE),
tax=rnorm(20),tax2=rnorm(20), assets=1e7+1e7*runif(20), assets2=1e6+1e7*runif(20))
DT <- data.table(dat)
我可以计算一列资产的加权平均值,如下所示:
DT[,list(wret = weighted.mean(tax,assets)),by=assetclass]
但是如何在 assets 和 assets2 上做到这一点呢?
如果有多个列,比如col=c("assets1", "assets2", "assets3", ... ),该怎么办?
并且是否也可以为税收,tax1...
【问题讨论】:
-
很抱歉造成混乱,点(.)不小心潜入,返回是从原始问题继承的。
-
DT[, .(wret = weighted.mean(ret,assets)), by=.(assetclass, assets)] 不起作用,因为它会按资产类别和资产分组。我想要的是衡量平均值时使用的两个不同的行。像这样:DT[, .(wret = weighted.mean(ret,.(assets, assets2)), by=assetclass]
-
DT[, .(wret = weighted.mean(tax,assets), wret2 = weighted.mean(tax,asets2)), by=assetclass]是什么?或者这是什么意思:但是如何在两者上都做到这一点?请给出您想要的结果,即编辑您的问题。 -
我们到了 :) - 如果有一整列列,比如 col=c("assets1", "assets2", "assets3", ... )
标签: r data.table weighted-average