lubridate函数包的使用

引言

目的

文章结构

lubridate包的主要函数简介

lubridate包简介

常识

尝试解决的问题

获取实时日期

自定义日期

时间 ymd、mdy、dmy

make_datetime

时间类型的转化函数

lubridate包中常用函数汇总

引言

目的

R软件做为一款数据处理的软件,自然能够处理日期格式的数据。但是R语言里的函数众多,对于许多初学者不知道如何去系统的学习使用。我将花两个篇幅去介绍处理日期的函数,本文系统介绍R语言里的lubridate函数包。

文章结构

本文先介绍基本的R语言日期处理的常识知识,然后在具体的介绍lubridate函数包里的函数使用。下图是文章结构的展示。


R语言函数源代码 r语言ymd函数_函数体

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

取出秒