2017-05-30 143 views
0

我想將csv轉換爲xts,但我不知道我得到了什麼。當我運行第一行時,我得到一個數據幀,然後使用第二行轉換爲xts。但是當我運行第二行時,日期列中的數據會被複制到同一列中!轉換csv到xts在r

sti <- read.csv('C:/.../STI.csv', header = TRUE) 
sti_xts <- as.xts(sti,order.by = as.Date(sti$DATE)) 

      DATE   OPEN HIGH LOW CLOSE VOLUME   X12.prd.VMAVE 
2013-01-02 "2013-01-02" "1.0" "1.1" "1.0" "1.0" "16,194,000.00" "11,209,083.00" 

2013-01-03 "2013-01-03" "1.1" "1.1" "1.0" "1.0" "12,803,000.00" "10,935,667.00" 

2013-01-04 "2013-01-04" "1.0" "1.1" "1.0" "1.0" "15,133,000.00" "10,335,167.00" 

2013-01-07 "2013-01-07" "1.0" "1.0" "1.0" "1.0" "13,289,000.00" "11,284,750.00" 

2013-01-08 "2013-01-08" "1.0" "1.0" "1.0" "1.0" "57,941,000.00" "15,668,000.00" 

2013-01-09 "2013-01-09" "1.0" "1.0" "1.0" "1.0" "81,389,000.00" "21,386,583.00" 

我在,使用R相當新的,我一直在一些教程後,與它修修補補,但我似乎無法弄清楚這一個。

另外,有沒有辦法讓我格式化我的CSV文件,所以我不會遇到像這樣的問題?謝謝!

+0

[這個答案](https://stackoverflow.com/q uestions/4297231 /轉換數據幀到xts)可能會解釋您的問題。 –

回答

1

首先,除去千位分隔符,並轉換爲數字:

sti$VOLUME <- as.numeric(gsub(",", "", sti$VOLUME)) 
sti$prd.VMAVE <- as.numeric(gsub(",", "", sti$prd.VMAVE)) 

然後轉換爲XTS時,DATE列不重複,但作爲您的時間序列指標:

> index(sti) 
[1] "2013-01-02" "2013-01-03" "2013-01-04" "2013-01-07" "2013-01-08" "2013-01-09" 

你想要的是可能排除第一列:

> as.xts(sti[,-1],order.by = as.Date(sti$DATE)) 
      OPEN HIGH LOW CLOSE VOLUME prd.VMAVE  
2013-01-02 1.0 1.1  1  1 16194000 11209083 
2013-01-03 1.1 1.1  1  1 12803000 10935667 
2013-01-04 1.0 1.1  1  1 15133000 10335167 
2013-01-07 1.0 1.0  1  1 13289000 11284750 
2013-01-08 1.0 1.0  1  1 57941000 15668000 
2013-01-09 1.0 1.0  1  1 81389000 21386583 
+0

謝謝shosaco,這非常有幫助。 – samael

+0

隨時接受它作爲一個答案,如果它幫助:) – shosaco