【问题标题】:As.Date returns error when applied to columnAs.Date 应用于列时返回错误
【发布时间】:2020-11-13 16:55:08
【问题描述】:

我有一个包含大约 20000 个观察值的数据集。我需要将其中一列转换为不同的日期格式。

head(df$created_at)
[1] Tue Mar 31 13:42:58 +0000 2020 Sat Mar 14 05:15:56 +0000 2020
[3] Sun Apr 05 14:02:10 +0000 2020 Tue Mar 24 09:06:12 +0000 2020
[5] Tue Apr 28 01:14:28 +0000 2020 Thu Oct 24 18:47:10 +0000 2019

我可以将 as.date 应用于单个行:

as.Date(df$created_at[1], format = '%a %b %d %H:%M:%S %z %Y')

[1] "2020-03-31

但是当我尝试在整个列上使用 as.Date 时,我得到:

df$dates = as.Date(df$created_at, format = '%a %b %d %H:%M:%S %z %Y')

Error in strptime(x, format, tz = "GMT") : input string is too long

我做错了什么?我在这里还缺少另一个命令吗?

【问题讨论】:

    标签: r strptime as.date


    【解决方案1】:

    (评论太长了。)

    它适用于您向我们展示的数据。你的专栏后面一定有问题。您可以通过在数据子集上尝试命令来定位问题,例如tmp <- as.Date(df[1:(round(nrow(df)/2)), "created_at", ...) - 然后 bisect 找到问题,例如如果问题没有出现在数据集的前半部分,则尝试行 1:(round(0.75*nrow(df))) 等等...

    您也可以尝试绘制nchar(df$created_at) 以查看是否弹出任何内容。


    df <- data.frame(created_at=c(
       "Tue Mar 31 13:42:58 +0000 2020 Sat Mar 14 05:15:56 +0000 2020",
       "Sun Apr 05 14:02:10 +0000 2020 Tue Mar 24 09:06:12 +0000 2020",
       "Tue Apr 28 01:14:28 +0000 2020 Thu Oct 24 18:47:10 +0000 2019"))
    
    df$dates = as.Date(df$created_at, format = '%a %b %d %H:%M:%S %z %Y')
    

    【讨论】:

    • 谢谢。我使用了 nchar,发现有些观察值的格式不一样。
    【解决方案2】:

    Ben 提到的数据不存在问题,这是使用 lubridate 包中的 parse_date_time 的解决方案,它将 date 变量解析为 POSIXct 日期时间。

    df <- tibble(date = c("Tue Mar 31 13:42:58 +0000 2020",
                          "Sun Apr 05 14:02:10 +0000 2020",
                          "Tue Apr 28 01:14:28 +0000 2020",
                          "Sat Mar 14 05:15:56 +0000 2020",
                          "Tue Mar 24 09:06:12 +0000 2020",
                          "Thu Oct 24 18:47:10 +0000 2019"))
    
    
    
    library(lubridate)
    df$date <- parse_date_time(df$date, "%a %b %d %H:%M:%S %z %Y")
    
      date               
      <dttm>             
    1 2020-03-31 13:42:58
    2 2020-04-05 14:02:10
    3 2020-04-28 01:14:28
    4 2020-03-14 05:15:56
    5 2020-03-24 09:06:12
    6 2019-10-24 18:47:10
    

    reprex package (v0.3.0) 于 2020 年 11 月 13 日创建

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 2021-11-21
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 2018-07-03
      相关资源
      最近更新 更多