用日期和时间读取csv

问题描述:

我在R中工作,阅读csv,在第一列中有日期和时间。 我想先在R中导入这个csv文件,然后将它转换为zoo obect。用日期和时间读取csv

我使用的代码中的R

EURUSD <- as.xts(read.zoo("myfile.csv",sep=",",tz="",header=T)) 

我的CSV文件包含以下格式的数据:

Date,Open,Low,High,Close 
2006-01-02 10:01:00,2822.9,2825.45,2822.1,2824.9 
2006-01-02 10:02:00,2825,2825.9,2824,2824.95 
2006-01-02 10:03:00,2824.55,2826.45,2824,2826.45 
2006-01-02 10:04:00,2826.45,2826.45,2824.9,2825.5 
2006-01-02 10:05:00,2825.15,2825.5,2824,2824.85 
2006-01-02 10:06:00,2824.7,2825.5,2823.7,2823.8 
2006-01-02 10:07:00,2823.95,2824.45,2823.55,2824 
2006-01-02 10:08:00,2824,2824.85,2823.5,2824.85 
2006-01-02 10:09:00,2824.25,2825.45,2824,2825.45 
2006-01-02 10:10:00,2825.2,2827,2825,2827 

当我运行上面的命令中的数据导入RI获得folowwwing错误:

Error in as.POSIXlt.character(x, tz, ...) : 
    character string is not in a standard unambiguous format 

我试图找出解决问题的所有方法。我通过网络阅读了很多博客,但没有一种方法适用于我。

我希望有人能帮助我。

+1

听起来就像你的日期栏里有东西在捣乱它。可能是一个流浪的空白,“ - ”,“,”,“n.a.”或类似的东西。 – 2012-02-21 04:37:43

+0

你确定你的'sep'是逗号吗?您的示例csv文件格式看起来像它的选项卡呢? – 2012-02-21 04:37:57

+0

它是逗号分隔的。我在记事本中打开了我的csv文件,它清楚地显示了逗号分隔 – user395882 2012-02-21 04:44:36

它看起来像错误是由于R不承认你的日期列是什么格式(它不能工作 - 日期/月/年?月/日/年?等)。

您可以告诉R使用format参数read.zoo(请参阅?strptime以了解您可以使用的说明符)的格式。

例如,如果有人日期/月/年小时(24小时制):分钟,你可以这样做:

EURUSD <- as.xts(read.zoo(file_name, 
          sep=',', 
          tz='', 
          header=T, 
          format='%d/%m/%Y %H:%M:%S')) # see the 'format' argument? 

(注 - 在你的问题CSV数据的片段你显示ISN用逗号分隔)。

+0

我试过使用read.zoo(“C:/Users/ParamJeet/Desktop/test/eurusd.csv”,sep =“,”,tz =“”,format =“ %Y-%m-%d%H:%M“,header = T),但它给了我错误:在read.zoo中的错误(”C:/Users/ParamJeet/Desktop/test/eurusd.csv“,sep = “,”,:,: 索引在数据行有13428个错误的条目:323559 323560 323561 323562 323563 – user395882 2012-02-21 04:58:22

+0

然后看看那些r在你的csv中 - 我的猜测是他们有不同的格式。 – 2012-02-21 05:07:14

+0

如果我打开我的记事本它看起来像日期,开放,低,高,关闭 2006-01-02 10:01:00 00822.9,2825.45,2822.1,2824.9如果我打开excel数据看起来像日期\t打开\t低\t高\t关闭 2006年1月2日10:01 \t 2822.9 \t 2825.45 \t 2822.1 \t 2824.9 2006年1月2日10:02 2825.9 2824.95 这认为这种差异导致的问题。 – user395882 2012-02-21 05:31:05

虽然这似乎是一个旧帖子,但我想分享我的经验,因为我经历了一个类似的非常令人沮丧的过程,试图加载时间序列csv数据到R. 上面的问题是,Excel改变了格式日期和时间为以下%m/%d/%Y %H:%M,基本上它下降了秒。如果您阅读这种格式的文件,并且您有第二个分辨率数据,则会获得多个类似的日期时间组合。所以您不能简单地使用忽略秒的格式,因为它会提供以下错误消息。 “字符串不是标准的明确格式”

解决方法是回到excel并将日期时间列的格式更改为%m/%d/%Y %H:%M:%S。您可以通过选择最接近的日期时间默认格式为所需格式(在本例中为%m/%d/%Y %H:%M,然后在最后手动添加:ss)。将该文件保存为csv文件,然后使用以下命令读取它:

Data<-read.zoo("file.csv", tz="", header=TRUE,format='%m/%d/%Y %H:%M:%S') 

这为我工作,我读到有大约900K行的文件。

阅读,而无需使用as.xtc,当日期栏就像一个字符的文件。然后转换日期POSIXlt类具有此功能:

library("chron") 
DateConvert<-function(x){ 
    dt<-strsplit(x,split = "T") 
    dt<-unlist(dt) 
    d1<-dt[1:length(dt) %% 2==1 ] 
    d2<-dt[1:length(dt) %% 2==0 ] 
    a<-as.POSIXlt(chron(dates.=d1, times.=d2, format = c(dates = "y-m-d", times = "h:m:s"))) 
    return(a) 
} 

DateConvert('Your column') 

,然后使用您数据上的as.xts函数。