2013-10-03 88 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