《R数据科学实战:工具详解与案例分析 》 —2.4.4 guess_formats/parse_date_time—时间日期格式
2.4.4 guess_formats/parse_date_time—时间日期格式分析
当遇到使用英文月份简写的日期,比如24 Jan 2018/Jan 24,或者其他更糟糕的情况时,如果使用传统的baseR中的函数,诸如strptime或是format之类,那么用户可能会浪费很多时间去猜测和组装正确的日期时间格式,因为只有顺序和格式都正确的时候,baseR中提供的相应函数才可以正确解析日期时间,否则就会不停地返回NA值。幸运的是,guess_formats和parse_date_time两个函数的存在,完全颠覆了以往的解析模式,从而使得这一过程变得简单有趣。
使用这两个函数解析日期时间的大体思路具体如下。
1)执行guess_formats函数以用于猜测需要解析对象的可能日期时间顺序及格式,用户必须指定可能存在的格式顺序。
2)复制guess_formats函数的返回结果。
3)执行parse_date_time,并将复制的内容以字符串向量的格式传参给函数。
4)若遇到解析不成功或不彻底的情况,则需要手动组建日期时间格式(组件列表请参看表2-24),并加入到guess_formats中的order参数中。
下面的代码简要解释了guess_formats和parse_date_time两个函数配合使用以解析日期时间的流程。首先生成一个名为example_messyDate的练习字符串向量,然后对该向量运行guess_formats,第二位参数orders中包含了可能存在的日期时间格式,并函数的返回结果中会报告匹配的顺序格式,并将报告结果复制到parse_date_time的第二位参数中。至此解析成功。
> example_messyDate <- c("24 Jan 2018",1802201810)
> guess_formats(example_messyDate,c("mdY", "BdY", "Bdy", "bdY", "bdy","dbY","dmYH"))
## dObY dOmYH dmYH
## "%d %Ob %Y" "%d%Om%Y%H" "%d%m%Y%H"
> parse_date_time(example_messyDate,orders = c("dObY","dOmYH","dmYH"))
## [1] "2018-01-24 00:00:00 UTC" "2018-02-18 10:00:00 UTC"
表2-24 日期时间组组成部分解释
- 点赞
- 收藏
- 关注作者
评论(0)