我有以下数据集:
Date sector Forward TRT1Y USD CIQ MKVAL
(time) (fctr) (dbl) (dbl)
1 1999-09-30 Consumer Discretionary 0.11622590 19856.182
2 1999-09-30 Industrials -0.13436770 0.000
3 1999-09-30 Industrials 0.09085045 0.000
4 1999-09-30 Financials 0.69653463 6142.963
5 1999-09-30 Consumer Discretionary 0.00000000 0.000
6 1999-09-30 Financials 1.61538458 1510.159
7 1999-09-30 Financials 0.27569774 0.000
8 1999-09-30 Industrials -0.33099464 0.000
9 1999-09-30 Consumer Discretionary 0.38051024 61308.492
10 1999-09-30 Industrials 0.07535502 0.000
日期是每季度,并持续到2015年12月31日。另外,这是结构:
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 97136 obs. of 4 variables:
$ Date : POSIXct, format: "1999-09-30" "1999-09-30" "1999-09-30"
$ sector : Factor w/ 11 levels "Consumer Discretionary",..: 8 6 7 4
$ Forward TRT1Y USD: num 0.1162 -0.1344 0.0909 0.6965 0 ...
$ CIQ MKVAL : num 19856 0 0 6143 0 ...
我正在尝试根据'CIQ MKVAL'创建一个重量列,并希望按日期和行业进行加权。然后,权重将帮助我得出每个部门和每个日期的加权平均前向TRT1Y。这是权重函数:
weight <- function(x) x/sum(x)
这是我用来查找加权并按日期和扇区拆分数据的代码
ddply(wMean1, .(Date,sector), transform, w=weight('CIQ MKVAL'))
但是,当我运行代码时,我收到以下错误:
Error in sum(x) : invalid 'type' (character) of argument
我在这个网站找到了一些东西:http://www.r-bloggers.com/type-conversion-and-you-or-and-r/我相信在进行上述计算时它会将我的数字字段转换为字符。我是R的新手,我还没有想出办法解决这个问题。有人有什么建议吗?