R数据科学-第九章使用lubridate处理日期和时间

本文详细介绍了使用R语言lubridate包处理日期和时间的方法,包括创建日期时间、提取成分、舍入操作、时间间隔计算及时区处理。讲解了如何通过字符串、组件或时间戳创建日期时间,并展示了提取日期时间各部分、调整时间间隔以及处理时区的实用函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章将会使用以下三个包:

> library(tidyverse)
> library(lubridate)
> library(nycflights13)

一、创建日期或时间

表示日期或时间的数据有三种:

日期:在tibble中显示为date。

时间:一天中的某个时刻,在tibble中显示为<time>。

日期时间:可以唯一标识某个时刻(通常精确到秒)的日期加时间,在tibble中显示为<dttm>。

得到当前日期或当前日期时间,可以使用today()或now()函数:

> today()
[1] "2021-11-09"
> now()
[1] "2021-11-09 12:26:29 CST"

以下有三种方法可以创建日期或时间:

1.通过字符串创建

如果确定了各个组成部分的顺序,那么这些函数可以自动将字符串转换为日期时间格式。

使用这些函数之前需要先确认年月日的排列顺序,然后按照同样的顺序排列y,m,d。

> ymd("2021-11-09")
[1] "2021-11-09"
> mdy("Nov 9th,2021")
[1] "2021-11-09"
> dmy("09-11-2021")
[1] "2021-11-09"

这些函数也可以接受不带引号的数值:

> ymd(20211109)
[1] "2021-11-09"
> mdy(11092021)
[1] "2021-11-09"
> dmy(09112021)
[1] "2021-11-09"

如果想要创建日期时间型数据,可以在ymd后面加一个下划线,再加入h,m,s的一个或多个字母。

> ymd_hms("2021-11-09 12:34:17")
[1] "2021-11-09 12:34:17 UTC"
> mdy_hm("11/09/2021 12:34")
[1] "2021-11-09 12:34:00 UTC"

通过添加一个时区参数,可以将日期强制转化为日期时间型数据:

> dmy(09112021,tz="UTC")
[1] "2021-11-09 UTC"

2.通过各个成分创建

除了单个字符串,日期时间数据的各个成分还经常分布在表格的多列,例如航班数据:

> flights %>% select(year,month,day,hour,minute)
# A tibble: 336,776 x 5
    year month   day  hour minute
   <int> <int> <int> <dbl>  <dbl>
 1  2013     1     1     5     15
 2  2013     1     1     5     29
 3  2013     1     1     5     40
 4  2013     1     1     5     45
 5  2013     1     1     6      0
 6  2013     1     1     5     58
 7  2013     1     1     6      0
 8  2013     1     1     6      0
 9  2013     1     1     6      0
10  2013     1     1     6      0
# ... with 336,766 more rows

可以使用make_date函数创建日期数据,make_datetime函数创建日期时间:

> flights %>% select(year,month,day,hour,minute) %>% mutate(departure=make_datetime(year,month,day,hour,minute))
# A tibble: 336,776 x 6
    year month   day  hour minute departure          
   <int> <int> <int> <dbl>  <dbl> <dttm>             
 1  2013     1     1     5     15 2013-01-01 05:15:00
 2  2013     1     1     5     29 2013-01-01 05:29:00
 3  2013     1     1     5     40 2013-01-01 05:40:00
 4  2013     1     1     5     45 2013-01-01 05:45:00
 5  2013     1     1     6      0 2013-01-01 06:00:00
 6  2013     1     1     5     58 2013-01-01 05:58:00
 7  2013     1     1     6      0 2013-01-01 06:00:00
 8  2013     1     1     6      0 2013-01-01 06:00:00
 9  2013     1     1     6      0 2013-01-01 06:00:00
10  2013     1     1     6      0 2013-01-01 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值