R:将数据帧转换为zoo:as.matrix.data.frame(x)出错

时间:2013-02-22 17:58:25

标签: r zoo

我需要合并两个时间序列,似乎最好使用merge.zoo来完成。当我尝试将两个数据帧中的每一个转换为动物园时,我收到以下错误:

zoo(FNCC_short)  
Error in as.matrix.data.frame(x) :   
dims [product 10] do not match the length of object [19]

R在哪里找到19的长度?我有:

> class(FNCC_short)  
[1] "data.frame"  
> length(FNCC_short)  
[1] 2  
> length(FNCC_short[,1])  
[1] 10  
> length(FNCC_short[,2])  
[1] 10  

我无法使用read.zoo(...)来获取数据,因为csv时间字段的格式不正确 - 我必须先读取csv文件,然后修复时间格式。

这是FNCC_short:

> FNCC_short  
             time_FNCC  FNCC  
1  2013-02-07 09:00:00 2.556  
2  2013-02-07 09:01:00 2.556  
3  2013-02-07 09:02:00 2.552  
4  2013-02-07 09:03:00 2.552  
5  2013-02-07 09:04:00 2.552  
6  2013-02-07 09:05:00 2.552  
7  2013-02-07 09:06:00 2.552  
8  2013-02-07 09:07:00 2.539  
9  2013-02-07 09:08:00 2.539  
10 2013-02-07 09:09:00 2.539  

> class(FNCC_short$time_FNCC)  
[1] "POSIXlt" "POSIXt"   

所以,第一列是POSIX时间。为什么这个简单的转换不起作用?

1 个答案:

答案 0 :(得分:1)

您可以使用指定format选项将第一列和第二列转换为动物园索引。

Lines <- 'time_FNCC time FNCC  ## I had to add the 'time' column name here
1  2013-02-07 09:00:00 2.556  
2  2013-02-07 09:01:00 2.556  
3  2013-02-07 09:02:00 2.552  
4  2013-02-07 09:03:00 2.552  
5  2013-02-07 09:04:00 2.552  
6  2013-02-07 09:05:00 2.552  
7  2013-02-07 09:06:00 2.552  
8  2013-02-07 09:07:00 2.539  
9  2013-02-07 09:08:00 2.539  
10 2013-02-07 09:09:00 2.539'

dat <- read.zoo(text = Lines, index = 1:2, tz = "")

dat
2013-02-07 09:00:00 2013-02-07 09:01:00 2013-02-07 09:02:00 2013-02-07 09:03:00 
              2.556               2.556               2.552               2.552 
2013-02-07 09:04:00 2013-02-07 09:05:00 2013-02-07 09:06:00 2013-02-07 09:07:00 
              2.552               2.552               2.552               2.539 
2013-02-07 09:08:00 2013-02-07 09:09:00 
              2.539               2.539