2013-10-03 73 views
1

我使用R 3.0.2和我加載到一個數據幀,我想要轉換爲xts格式的CSV。錯誤在行名稱轉換在R爲一個數據幀

我的數據看起來像從這個post這個

head(data) 
      V1  V2  V3  V4  V5  V6  V7  V8  V9 
1 1999-01-04 1.1812 1.18120 1.18120 1.18120 1.18120 1.18120 1.18120 1.18120 
2 1999-01-05 1.1760 1.17860 1.17860 1.17860 1.17860 1.17860 1.17860 1.17860 
3 1999-01-06 1.1636 1.17360 1.17360 1.17360 1.17360 1.17360 1.17360 1.17360 
4 1999-01-07 1.1672 1.17200 1.17200 1.17200 1.17200 1.17200 1.17200 1.17200 
5 1999-01-08 1.1554 1.16868 1.16868 1.16868 1.16868 1.16868 1.16868 1.16555 
6 1999-01-11 1.1534 1.16613 1.16613 1.16613 1.16613 1.16613 1.16312 1.15990 

以下建議我試着行名稱轉換如下

rownames(data) = data[1] 

但我得到它,我不能發現以下錯誤我的方式

Error in `row.names<-.data.frame`(`*tmp*`, value = value) : 
    invalid 'row.names' length 
+2

嘗試'rownames(data)= data [,1]'。 – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto做到了! – pyCthon

+0

而且,如果您的最終目標是轉換爲xts,Dirk的答案就是最好的選擇。 'dataxts < - xts(data [, - 1],order.by = data [,1])''。這基本上轉化爲「使用除第一列以外的所有列的數據,按第一列中找到的時間值排序」。 – A5C1D2H2I1M1N2O1R2T1

回答

2

基於非常慷慨的評論 這裏是一個簡單的解決方案

rownames(data) <- as.Date(data[,1]) 
dataxts <- xts(data[,-1], order.by=data[,1]) 
+3

根據讀取數據的方式,我想你需要'data [,1] < - as.Date(data [,1])',可能帶有'as.character(data [,1])''。使rownames成爲Date對象不會使第一列成爲一列,這就是您在這裏使用的。 –

+3

也許您的利益,你可以探索一點,並試圖瞭解*爲什麼*我在評論中共享的解決方案工作。請參閱與str(data [[1]])或str(data [,1])'相對的實例'str(data [1])'。另請注意''xts'「'order.by'」是一個唯一時間/日期*的相應向量。 – A5C1D2H2I1M1N2O1R2T1

+0

良好的捕獲和非常有用的提示和提示 – pyCthon