lubridate函数包的使用
引言
目的
文章结构
lubridate包的主要函数简介
lubridate包简介
常识
尝试解决的问题
获取实时日期
自定义日期
时间 ymd、mdy、dmy
make_datetime
时间类型的转化函数
lubridate包中常用函数汇总
引言
目的
R软件做为一款数据处理的软件,自然能够处理日期格式的数据。但是R语言里的函数众多,对于许多初学者不知道如何去系统的学习使用。我将花两个篇幅去介绍处理日期的函数,本文系统介绍R语言里的lubridate函数包。
文章结构
本文先介绍基本的R语言日期处理的常识知识,然后在具体的介绍lubridate函数包里的函数使用。下图是文章结构的展示。
lubridate包的主要函数简介
lubridate包简介
在数据中日期的出现场景很多,也会出现很多技术问题,如何随心所欲的去创建一个时间序列去匹配已经有的数据?怎么处理已经读入的现有的日期数据?那么lubridate包他来了,他就是一个专注解决日期技术的一个包。由于篇幅和能力有限,这篇文章要介绍的也不能面面俱到。只能为读者开个头,更加深入的问题,希望读者去读该包的帮助文档。当然我们也会把本文要解决的问题列出来,并努力讲清楚。
常识
1、日期数据主要有七部分组成:年、月、日、时、分、秒、时区。所以在大的方面分为两部分。
日期型数据: 不含具体时间的日期数据
日期时间型数据: 包含具体时间的日期数据
2、R语言中的日期的类属性是:Date、整数存储。默认从1970年1月1日开始往后的天数。如果读入的数据时整数的同志也不要担心,自行运算便可得到对应日期,当然R语言内部接受默认的日期向量化运算。
例如:1970-01-02储存的整数为1。
尝试解决的问题
下面是本文lubridate包要解决的问题
1、能够实时获取日期型数据和日期时间型数据。
2、自定义生成公式化的日期数据。(Date型)
3、实现日期型数据和日期时间型数据的转化。
4、列出提取Date类中的年月日时分秒等元素。
获取实时日期
先介绍获取日期的函数now和today函数,按着惯例先介绍函数的参数,由于两个函数的参数比较相似,我们只贴出now函数的函数体:
function (tzone = "")
with_tz(Sys.time(), tzone)
接着是运行代码效果以及注释:
> today() # 获取当日的 年月日 需要载入lubridate包才可以使用
[1] "2020-03-29"
> lubridate::today() # 获取当日的年月日 不需要载入包
[1] "2020-03-29"
> # 以下函数区别同上 只备注功能
> now() # 获取当日的 年月日 时分秒 时区
[1] "2020-03-29 10:38:33 CST"
> lubridate::now()
[1] "2020-03-29 10:38:33 CST"
上面的注释已经很明朗,我们只解释下CST的含义。他是操作的时候你的电脑ip所在的时区,一般会和你的常识一致,所以不用太过纠结。
自定义日期
时间 ymd、mdy、dmy
构建时间一般是需要字符数据的,这部分的三个函数识别的格式可以是-分割,也可以是/分割的。即:
“2020-3-29”或者“2020/3/29”
我们以年月日的函数为例子贴出函数参数和函数体:
function (..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"),
truncated = 0)
.parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz,
locale = locale, truncated = truncated)
下面是运行例子以及注释:
> # 本例子以单个字符为例子,可以向量化处理
> (da = ymd("2020-3-28")) # 年月日
[1] "2020-03-28"
> class(da) # 查看数据类型
[1] "Date"
> mdy("3-28-2020")
[1] "2020-03-28"
> dmy("28-3-2020")
[1] "2020-03-28"
> # 当然以下字符格式也可以识别
> ymd("2020/3/28")
[1] "2020-03-28"
这里不再进行解释啥,在自定义的时候也常常用到下面的函数。
make_datetime
下面是该函数的参数和函数体,从中我们可以看出该函数的参数很齐全可以随意的生成year, month, day, hour, min, sec,。
function (year = 1970L, month = 1L, day = 1L, hour = 0L, min = 0L,
sec = 0, tz = "UTC")
{
lengths
下面是一些例子。
make_datetime() # 默认输出 UTC 为本初子午线上平均太阳时。
make_datetime(year = 2020L, month = 3L, day = 29L, hour = 0L, min = 0L,
sec = 0, tz = "UTC") # 输出当下日期
时间类型的转化函数
最后介绍下转化函数,这一步不会改变内参数,但是方便统一格式进行运算。 as_date, as_datetime这里仅仅贴出该函数的参数,就不再写示例代码了。
> as_date
standardGeneric for "as_date" defined from package "lubridate"
function (x, ...)
standardGeneric("as_date")
standardGeneric("as_date")
Methods may be defined for arguments: x
Use showMethods("as_date") for currently available ones.
> as_datetime
nonstandardGenericFunction for "as_datetime" defined from package "lubridate"
function (x, ...)
{
standardGeneric("as_datetime")
}
code: 0x00000000233d1488>
Methods may be defined for arguments: x
Use showMethods("as_datetime") for currently available ones.
lubridate包中常用函数汇总
在lubridate包还有其他函数,现在把常用的提取日期各个元素函数汇总如下表:
函数
含义
year
取出年
month
取出月
mday
取出日
yday
取出一年中的第几天(元旦为1)
wday
取出周几(周天为1,周六为7)
hour
取出时
minute
取出分
second
取出秒