2016-01-27 126 views
1

我有多个csv文件,我需要读入R.第一列文件包含日期和时间,当我加载数据框时将转换为POSIXlt。我的每个csv文件都具有在Excel中以相同方式格式化的日期和时间,但是,有些文件的读入方式不同。从Excel中读取日期到R

例如,

我的文件看起来像这样一次输入:

date    value 
1 2011/01/01 00:00:00 39 
2 2011/01/01 00:15:00 35 
3 2011/01/01 00:30:00 38 
4 2011/01/01 00:45:00 39 
5 2011/01/01 01:00:00 38 
6 2011/01/01 01:15:00 38 

因此,我用它来修改格式的代码是:

DATA$date <- as.POSIXlt(DATA$date,format="%Y/%m/%d %H:%M:%S") 

但是,某些文件正在读作:

date    value 
1 01/01/2011 00:00 39 
2 01/01/2011 00:15 35 
3 01/01/2011 00:30 38 
4 01/01/2011 00:45 39 
5 01/01/2011 01:00 38 
6 01/01/2011 01:15 38 

这意味着我的代码的格式部分不起作用,并给出错误。因此,是否有自动检测date列的格式?或者,有没有办法知道它是如何读取的,因为Excel中列的格式在两者上都是相同的。

+1

这可能帮助:http://stackoverflow.com/questions/26064292/guess-formats-r-lubridate –

回答

2

当您的日期输入使用错误的格式字符串时,我似乎得到NA值。如果是这种情况,你可以分两步解决这个问题。首先,从Excel格式的日期假设你有三个小时,分钟和秒:

date.original <- DATA$date 
DATA$date <- as.POSIXlt(DATA$date,format="%Y/%m/%d %H:%M:%S") 

这应该留在dateNA值,这会丢失秒的日期。那么你可以试试这个:

DATA$date[is.na(DATA$date)] <- as.POSIXlt(date.original, format="%Y/%m/%d %H:%M") 

这应该覆盖剩下的数据。

数据

DATA <- data.frame(date=c('2011/01/01 00:00:00', '2011/01/01 00:15', 
          '2011/01/01 00:30:00', '2011/01/01 00:45'), 
        value=c(39, 35, 38, 39))