0
我有兩個數據幀面板 - 一個由日期排列的股票收盤價格(行)和股票代碼(列):創建兩個數據幀
> head(data.stocks)
date A AAPL ABAT AB ABV
1 2010-10-04 32.59 278.64 3.65 26.42 125.89
2 2010-10-05 33.04 288.94 3.66 27.10 129.05
3 2010-10-06 32.67 289.19 3.59 26.99 129.90
4 2010-10-07 33.20 289.22 3.66 27.04 129.94
5 2010-10-08 33.80 294.07 3.84 26.76 132.66
6 2010-10-11 33.75 295.36 3.87 26.95 133.37
其他數據幀未平倉合約( OI)佈置成通過一排每股票代碼每日期:
> head(data.oi)
date symbol oi close
1 2010-10-04 A 6 0
2 2010-10-04 AA 104 0
3 2010-10-04 AAPL 940 0
4 2010-10-04 AB 0 0
5 2010-10-04 ABAT 0 0
6 2010-10-04 ABB 0 0
我想另一列,使得我最終每日期一個股票代號添加到該第二數據幀與「面板」的數據幀與oi和收盤價格排。
我想這個循環會的工作,但我得到了以下錯誤:
> for (i in seq(length(data.oi$date))) {
+ row <- which(data.stocks$date == data.oi$date[i])
+ col <- which(colnames(data.stocks) == data.oi$symbol[i])
+ data.oi$close[i] <- data.stocks[row, col]
+ }
Error in data.oi$close[i] <- data.stocks[row, col] :
replacement has length zero
FWIW,它存儲在data.oi
的第一個值,那麼失敗:
> head(data.oi)
date symbol oi close
1 2010-10-04 A 6 32.59
2 2010-10-04 AA 104 0.00
3 2010-10-04 AAPL 940 0.00
4 2010-10-04 AB 0 0.00
5 2010-10-04 ABAT 0 0.00
6 2010-10-04 ABB 0 0.00
謝謝!我覺得reshape
或aggregate
可以做到這一點,但我不知道如何合併這兩個。
謝謝!而且我爲我瘋狂的循環添加了「close」,所以它更容易! Melt是我最好的朋友。 – 2010-10-28 11:35:59