R\ 的基本strptime函数给了我意想不到的输出。
这按预期工作:
\n\nstrptime(20130203235959, "%Y%m%d%H%M%S")\n# yields "2013-02-03 23:59:59"\nRun Code Online (Sandbox Code Playgroud)\n\n这个也是:
\n\nstrptime(20130202240000, "%Y%m%d%H%M%S")\n# yields "2013-02-03"\nRun Code Online (Sandbox Code Playgroud)\n\n...但这不是。为什么?
\n\nstrptime(20130203000000, "%Y%m%d%H%M%S")\n# yields NA\nRun Code Online (Sandbox Code Playgroud)\n\n更新
\n\n该值20130204000000显示在我使用以下命令在 Mac 10.7.5 系统上生成的日志中:
strptime(20130203235959, "%Y%m%d%H%M%S")\n# yields "2013-02-03 23:59:59"\nRun Code Online (Sandbox Code Playgroud)\n\n更新2
\n\n我什至尝试过lubridate,这似乎是推荐:
\n\n> parse_date_time(c(20130205000001), c("%Y%m%d%H%M%S"))\n 1 parsed with %Y%m%d%H%M%S\n[1] "2013-02-05 00:00:01 UTC"\n> parse_date_time(c(20130205000000), c("%Y%m%d%H%M%S"))\n1 failed to parse.\n[1] NA\nRun Code Online (Sandbox Code Playgroud)\n\n...然后有趣的是,当我添加足够的秒数到达now()午夜时,它打印出“00:00:00”:
> now() + new_duration(13000)\n[1] "2013-02-10 00:00:00 GMT"\nRun Code Online (Sandbox Code Playgroud)\n
当我解析日期时,我应该使用character而不是:numeric
> strptime(20130203000000, "%Y%m%d%H%M%S") # No!
[1] NA
> strptime("20130203000000", "%Y%m%d%H%M%S") # Yes!
[1] "2013-02-03"
Run Code Online (Sandbox Code Playgroud)
这样做的原因似乎是我的numeric值被转换为character,并且我使用了太多的数字:
> as.character(201302030000)
[1] "201302030000"
> as.character(2013020300000)
[1] "2013020300000"
> as.character(20130203000000)
[1] "2.0130203e+13" # This causes the error: it doesn't fit "%Y%m%d%H%M%S"
> as.character(20130203000001)
[1] "20130203000001" # And this is why anything other than 000000 worked.
Run Code Online (Sandbox Code Playgroud)
从文档中找出所需类型的快速课程:在 R 中,执行help(strptime)并看到类似于下图的弹出窗口。
numeric。
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |