【问题标题】:Parse date with split seconds using read_delim使用 read_delim 分秒解析日期
【发布时间】:2017-03-29 13:19:45
【问题描述】:

使用readr 包中的read_delim 函数,我想解析一个包含2016-12-29 09:00:18.456 格式的日期时间列的csv 文件,并明确说明格式。

从以下来源(https://stat.ethz.ch/R-manual/R-devel/library/base/html/strptime.html,https://www.rdocumentation.org/packages/readr/versions/1.0.0/topics/parse_datetime),我知道我应该使用这个:"%Y-%m-%d %H:%M:%OS" 作为代码的一部分:

a <- read_delim("file.csv", col_names = TRUE, delim = ";", 
                locale = locale(decimal_mark = ","), col_types = cols(
                'Start time' = col_datetime("%Y-%m-%d %H:%M:%OS")))

但是,我收到以下错误:

Warning: * parsing failures.
row        col                     expected                  actual
  1 Start time date like %Y-%m-%d %H:%M:%OS 2016-12-29 09:00:18.456

这是一个简短的可重现的问题示例:

parse_datetime("2016-12-29 09:00:18.456", "%Y-%m-%d H%:M%:%OS")

我做错了什么?

【问题讨论】:

  • 不应该是%H和%M而不是H%和M%吗?
  • @AndrewGustar 你说得对,因为问题仍然存在,我现在会更新问题
  • 你试过%OS3,根据strptime链接吗?
  • @AndrewGustar 我已经在这种情况下尝试过: ...col_datetime("%Y-%m-%d %H:%M:%OS3") 结果相同
  • @user632716 好问题,为其他新用户提供了很多背景和参考资料。

标签: r datetime


【解决方案1】:

小数点与.的秒数不一致。我还必须设置 options("digits.secs"=3) 才能让它工作

a <- read_delim("file.csv", col_names = TRUE, delim = ";", 
                locale = locale(decimal_mark = "."), 
                col_types = cols(`Start time` = col_datetime("%Y-%m-%d %H:%M:%OS")))

【讨论】:

    【解决方案2】:

    a &lt;- read_delim("file.csv", col_names = TRUE, delim = ",", locale = locale(decimal_mark = "."), col_types = cols( 'Start time' = col_datetime("%Y-%m-%d %H:%M:%OS")))

    只需要改变你的分隔符和小数点。

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 2015-09-16
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2012-08-29
      • 1970-01-01
      相关资源
      最近更新 更多