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

R:将数据帧转换为zoo:as.matrix.data.frame(x)中出错,r,zoo,R,Zoo,我需要合并两个时间序列,似乎最好使用merge.zoo。当我尝试将两个数据帧中的每一个都转换为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(FNC

我需要合并两个时间序列,似乎最好使用merge.zoo。当我尝试将两个数据帧中的每一个都转换为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_简称:

> 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时间。为什么这个简单的转换不起作用?

您可以使用specify
format
选项将第一列和第二列转换为zoo索引

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 

行您可以在
read.zoo
中使用
format
argument来指定正确的格式。-1没有提供
dput
输出,或者即使在被要求同时执行这两项操作后,也没有尽合理的努力来阅读文档。不幸的是,这并不能解决我的data.frame问题。实际数据集要长得多,所以将其转换为文本是不实际的。我在zoo()中没有看到“格式”选项,只有在read.zoo()中,它不接受data.frame。@user2069819我的答案是针对您的陈述,我无法使用read.zoo(…)获取数据,因为csv时间字段的格式不正确。不,你可以。现在我想你的意思是,你已经读取了你的数据,你想用read.zoo重新读取它?你能
dput(head(data_frame))
看看为什么不能把它转换成zoo吗?user2069819,答案是
text=
使它可以复制。您可以使用相同的命令将“text=…”替换为“myfile.txt”,例如,如果您想从文件中读取它。关于使用
read.zoo
有一个完整的小插曲,在
?read.zoo
中也有一些例子。建议你现在复习这些材料。好的,谢谢你的澄清。我发现了一个涉及Excel的环形交叉路口(如果有人感兴趣):如果您在Excel中使用类型为“2/7/13 13:32”的时间格式,那么read.zoo(“file.csv”,format=“%m/%d/%y%H:%m”,sep=“,”,tz=“,header=T”)将毫无问题地将数据读取到zoo中。我的问题是原始Excel格式的时间字段中包含“AM”,zoo无法理解。sep=“,”,tz=“,页眉=T)