【问题标题】:Reading in dates from Excel into R将 Excel 中的日期读入 R
【发布时间】:2016-05-04 02:25:15
【问题描述】:

我有多个 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 中列的格式在两者上都是相同的。

【问题讨论】:

标签: r excel csv datetime import


【解决方案1】:

当您的日期输入使用错误的格式字符串时,我似乎得到了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))

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 2017-03-28
    • 2013-12-24
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2014-05-27
    相关资源
    最近更新 更多