用R中的循环建模的价格指数

时间:2015-10-01 08:46:59

标签: r loops date for-loop time-series

我正在尝试重现同等加权的价格指数。我有价格和矩阵,告诉股票何时进出指数。这是数据的一小部分。

table="date, A, B,C,D,E,F
1,31/01/1998,1,1,1,1,1,0
2,28/02/1998,1,1,1,1,1,0
3,31/03/1998,1,1,1,1,1,0
4,30/04/1998,1,1,1,1,1,0
5,31/05/1998,1,1,1,1,1,0"
matrix=read.csv(text=table)

table2="date,A,B,C,D,E,F    
1,05/01/98,20.56,97.40,279.70,72.85,20.33,298.00
2,06/01/98,20.56,96.50,276.20,72.90,20.22,299.90
3,14/02/98,20.84,98.45,282.50,73.75,20.70,302.80
4,15/02/98,20.90,98.50,280.70,73.65,20.71,306.50
5,09/03/98,20.58,97.00,276.20,72.95,20.25,304.00"
price=read.csv(text=table2)

股票的价格和矩阵数据的顺序相同。由于我想将矩阵与价格相乘,我将其变为矩阵。

as.matrix(price)
as.matrix(matrix)
as.Date[price[,1], format="%d/%m/%y"] #Error: object of type 'closure' is not subsettable
as.Date[matrix[,1], format="%d/%m/%Y"]

(1)然而在这里我遇到了第一个问题。在使用as.Matrix()之前,无论是否在矩阵中,我都无法识别日期。我也尝试了这里提出的方法(Extract month and year from a zoo::yearmon object)。我需要日期,原因如下。我想做一个循环1.从矩阵中获取月份和年份,并在价格数据中搜索相同的月份和年份。 2.如果找到相同的月份和年份,则应将矩阵中的行与价格中的行相乘。这是因为矩阵按月计算,价格是每日。这将是我的 Idea 循环:

for (matrix(%m/%Y) in price$date){
  if (matrix(%m/%Y)== price(%m/%y)
    c<- matrix[position of matrix(%m/%Y),] %*% price[position of price(%m/%y),] 
}

(2)但是我以前从未使用过循环,第二个问题是 for loop 是否适合我的问题?循环的期望输出如下:

table3="date,A,B,C,D,E,F    
1,05/01/98,20.56,97.40,279.70,72.85,20.33,0
2,06/01/98,20.56,96.50,276.20,72.90,20.22,0
3,14/02/98,20.84,98.45,282.50,73.75,20.70,0
4,15/02/98,20.90,98.50,280.70,73.65,20.71,0
5,09/03/98,20.58,97.00,276.20,72.95,20.25,0"
desired_c=read.csv(text=table3)

最后,我希望得到一个像这样的加权价格指数:

table4="date, price
1,05/01/98,98.168
2,06/01/98,97.276
3,14/02/98,99.248
4,15/02/98,98.892
5,09/03/98,97.396"
desired_index=read.csv(text=table4)

如果我可以把它放在我的循环中那会很棒。请注意,矩阵和价格由许多观察结果组成。因此,只能删除最后一列。

0 个答案:

没有答案