《R数据科学实战:工具详解与案例分析 》 —2.4.2 ymd/ymd_hms—年月日还是日月年?
2.4.2 ymd/ymd_hms—年月日还是日月年?
一般情况下,ymd及其子函数可以完整地解析以数字或字符串形式出现的日期形式,只有当日期中对不同的成分以类似双引号作为分隔符的情况,或者是对象为奇数的情况时(详见代码演示),ymd等函数可能会无法直接进行解析,而是需要进行额外处理。ymd函数即代表年月日,ymd_hms函数则代表年月日时分秒。两类函数的参数名称、结构和位置完全一致,具体函数名称见表2-23。默认时区为世界标准时间UTC。表2-23中列出了两组函数所有的子函数。读者在解析时间时应当注意时区,因为北京时间比UTC早8个小时,所以是UTC+8。所有对象经过解析后都会输出为年月日(时分秒)的标准日期格式,并且类别为“Date”。
表2-23 lubridate包中日期格式解析主要函数一览
lubridate函数可以仅使用默认设置轻松解析偶数位的字符型向量,必须要注意的是,偶数位必须大于6位,否则会产生NA。在下列的代码中,“2018 1 2”因为其中存在空格,所以被默认解析为6位。同样的逻辑也适用于解析日期时间对象。参数tz用于设置时区,示例代码如下:
> library(lubridate)
> ymd(c(20180102, "2017-01-02","2018 1 2"))
## [1] "2018-01-02" "2017-01-02" "2018-01-02"
> dmy_h(c(1802201810,"20-10-2018 24"),tz = "Asia/Shanghai")
## [1] "2018-02-18 10:00:00 CST" "2018-10-21 00:00:00 CST"
小提示
如果函数没有自动解析正确的时区,那么读者可以使用Sys.timezone()或Olson-Names()来寻找正确的时区,并传参设置时区。
- 点赞
- 收藏
- 关注作者
评论(0)