2014-01-16 37 views
2

在第一行綁定具有不同行數的多個數據集我試圖通過作爲數據集第一列的「TimeStamp」綁定多個股票。其餘列是開放,高,低,關閉,音量。其中一個問題是它們都包含不同的行。第二個問題是「TimeStamp」是數字&我不知道如何將其轉換爲適當的「TIME」。我所知道的是,他們都是1分鐘的間隔,&是給定範圍的每一天:如何使用R

這些範圍都是一樣的,我纔要綁定的股票。

DATE   BEGINNING END 
range: 20131220 1387515600 1387601940 
range:20131223 1387774800 1387861140 
range:20131224 1387861200 1387947540 
range:20131226 1388034000 1388120340 

這裏是一個股票的一個例子:

Time  Open High Low  Close Volume 
1387519189 1.3635 1.3635 1.3632 1.3634 16300 
1387519476 1.3633 1.3636 1.3632 1.3635 200 
1387519798 1.3635 1.3635 1.3634 1.3634 200 
1387520045 1.3635 1.3636 1.3635 1.3635 100 
1387520392 1.3635 1.3636 1.3634 1.3635 100 
1387520637 1.3636 1.3636 1.3635 1.3635 100 
1387520977 1.3635 1.3636 1.3635 1.3636 100 
1387521292 1.3637 1.3637 1.3635 1.3635 400 

我一直在使用cbind綁定的所有股票試過,但出現錯誤,因爲它們都含有不同的行。我試圖將每個股票轉換爲xts對象,但由於我不知道如何分解TIME我無法做到這一點。有什麼建議麼?提前致謝!

所需的輸出:

`Time Open High Low Close Volume`  `Time Open High Low Close Volume` 

1387519189 1.3635 1.3635 1.3632 1.3634 163001387519189 35.5 35.90 35.4 35.5 100

1387519476 1.3633 1.3636 1.3632 1.3635 2001387519476 35.6 35.6 35.40 35.5 100

1387519798 1.3635 1.3635 1.3634 1.3634 2001387519798 35.8 35.95 35.4 35.5 100

+0

你嘗試過使用'merge()'嗎? – Seth

+0

是的,我也試過使用'merge()',但我的電腦結束凍結..感謝 – Jason

+0

merge.xts'已知有內存問題,這可能導致計算機凍結:http://stackoverflow.com/ q/12028671/841830從2012年4月開始,我不確定這個問題是否已得到解決,或者內存問題僅限於該問題的合併行用例。 –

回答

1

關於將時間戳轉換爲時間的問題,看起來像這些可能是POSIX格式(自1970-01-01以來的秒數)。調用你的榜樣df

date.time <- as.POSIXct(df$Time, origin="1970-01-01") 
time.only <- format(date.time,"%H:%M:%S") 
df.times <- data.frame(Time=df$Time, date.time, time.only) 
df.times 
#   Time   date.time time.only 
# 1 1387519189 2013-12-20 00:59:49 00:59:49 
# 2 1387519476 2013-12-20 01:04:36 01:04:36 
# 3 1387519798 2013-12-20 01:09:58 01:09:58 
# 4 1387520045 2013-12-20 01:14:05 01:14:05 
# 5 1387520392 2013-12-20 01:19:52 01:19:52 
# 6 1387520637 2013-12-20 01:23:57 01:23:57 
# 7 1387520977 2013-12-20 01:29:37 01:29:37 
# 8 1387521292 2013-12-20 01:34:52 01:34:52 

這些是不是1個分鐘的間隔,雖然。

+0

你是一個天才,我正在努力弄清楚如何在世界上我可以打破時間戳。非常感謝。看起來足夠準確,看起來他們不是1分鐘的時間間隔。 – Jason

1

要使用什麼是plyrjoin命令。

join(x, y, by = "Time", type = "full") 
+0

我嘗試過使用'join()',但我得到'錯誤在[data.frame(x,by):未定義的列選擇'。你知道我該如何解決這個問題嗎? – Jason

+0

我已經解決了這個問題..期望的結果是:'join(x,y,by =「Time」,type =「left」)'再次感謝你 – Jason