繁体   English   中英

将日期从Excel读入R

[英]Reading in dates from Excel into R

我有多个需要读入R的csv文件。文件的第一列包含日期和时间,加载数据帧POSIXlt它们转换为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中列的格式在两者上都相同。

为日期输入使用错误的格式字符串时,我似乎得到了NA值。 在这种情况下,您可以分两个步骤解决此问题。 首先,假设您具有小时,分钟和秒这三个时间,请格式化Excel中的日期:

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

对于缺少秒数的日期,这应该在date列中保留NA值。 然后,您可以尝试以下操作:

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM