Совокупное и взвешенное среднее в R

Я пытаюсь вычислить взвешенные активом возвраты классом активов. Ни за что в жизни я не могу выяснить, как сделать это с помощью совокупной команды.

Мой кадр данных похож на это

dat <- data.frame(company, fundname, assetclass, return, assets)

Я пытаюсь сделать что-то как (не копируйте это, это неправильно):

aggregate(dat, list(dat$assetclass), weighted.mean, w=(dat$return, dat$assets))
12
задан Arun 27 March 2013 в 23:57
поделиться

1 ответ

Для начала, w = (dat $ return, dat $ assets)) является синтаксической ошибкой.

И plyr немного упрощает задачу:

> set.seed(42)   # fix seed so that you get the same results
> dat <- data.frame(assetclass=sample(LETTERS[1:5], 20, replace=TRUE), 
+                   return=rnorm(20), assets=1e7+1e7*runif(20))
> library(plyr)
> ddply(dat, .(assetclass),   # so by asset class invoke following function
+       function(x) data.frame(wret=weighted.mean(x$return, x$assets)))
  assetclass     wret
1          A -2.27292
2          B -0.19969
3          C  0.46448
4          D -0.71354
5          E  0.55354
> 
13
ответ дан 2 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: