我有多个csv
文件需要读入R.文件的第一列包含日期和时间,当我加载数据框时,我将其转换为POSIXlt
。我的每个csv
文件都在Excel中以相同的方式格式化日期和时间,但是,某些文件的读取方式不同。
例如,
导入后,我的文件看起来像这样:
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中列的格式在两者上是相同的。
答案 0 :(得分:2)
使用错误的格式字符串进行日期输入时,我似乎得到NA
个值。如果是这种情况,则分两步解决此问题。首先,假设您有三小时,分钟和秒来格式化Excel中的日期:
date.original <- DATA$date
DATA$date <- as.POSIXlt(DATA$date,format="%Y/%m/%d %H:%M:%S")
对于那些缺少秒的日期,这应该在NA
列中保留date
个值。然后你可以试试这个:
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))