lubridate包日期时间处理(日期、时间、日期时间、设置和获取时间、时期、阶段、区间)
1 创建日期时间
日期:在 tibble 中显示为 <date>。
时间:一天中的某个时刻,在 tibble 中显示为 <time>。
日期时间:可以唯一标识某个时刻(通常精确到秒)的日期加时间,在 tibble 中显示为<dttm>
想得到当前日期或当前日期时间,你可以使用 today() 或 now() 函数:
today()

now()

1.1通过字符串创建
ymd("2022-03-09")

dmy("09-Mar-2022")

mdy_hm("03/09/2022 20:18")

1.2 通过各个成分创建
加载tidyverde包出现错误:

重新安装rlang包:

此时重新加载:

筛选分布在表中的日期时间:
flights %>% select(year, month, day, hour, minute)

2 获取成分
datetime <- ymd_hms("2022-03-09 20:30:56")
year(datetime) #年份

month(datetime) #月份

mday(datetime) #一个月中的第几天

yday(datetime) #一年中的第几天

wday(datetime) #一周中的第几天

month() 和 wday() 函数,你可以设置 label = TRUE 来返回月份名称和星期数的缩写,还可以设置 abbr = FALSE 来返回全名:
month(datetime, label = TRUE)

wday(datetime, label = TRUE, abbr = FALSE)

2.1 设置成分
(datetime <- ymd_hms("2022-03-09 20:39:56"))

year(datetime) <- 2023 #修改年份 datetime

month(datetime) <- 01 #修改月份 datetime

hour(datetime) <- hour(datetime) + 2 #修改小时 datetime

update() 函数创建一个新日期时间: update(datetime, year = 2023, month = 3, mday = 2, hour = 2)

如果设置的值过大,那么可以自动向后滚动:
ymd("2021-03-01") %>%
update(mday=30)

3 时间间隔
时期:以秒为单位表示一段精确的时间。
阶段:表示由人工定义的一段时间,如几周或几个月。
区间:表示从起点到终点的一段时间。
3.1 时期
在R中,将两个日期相减:
h_age <- today() - ymd(19961010) h_age

as.duration(h_age)

可以使用很多方便的构造函数来创建时期:
dseconds(15)

dminutes(10)

dhours(c(12, 24))

ddays(0:5)

可以对时期进行加法和乘法操作:
2 * dyears(1)

dyears(1) + dweeks(12) + dhours(15)

时期可以和日期型数据相加或相减:
tomorrow <- today() + ddays(1) tomorrow

last_year <- today() - dyears(1) last_year

3.2 阶段
阶段也是一种时间间隔,但它不以秒为单位;相反,它使用“人工”时间,比如日和月。
seconds(15)

minutes(10)

hours(c(12, 24))

days(7)

months(1:6)

years(1)

可以对阶段进行加法和乘法操作:
10 * (months(6) + days(1))

days(50) + hours(25) + minutes(2)

阶段可以和日期相加:
ymd("2020-02-02") + dyears(1)

ymd("2022-02-02") + years(1)

3.3 区间
区间是带有起点的时期,这使得其非常精确,你可以确切地知道它的长度:
next_year <- today() + years(1) next_year

(today() %--% next_year) / ddays(1)

本文来自博客园,作者:zhang-X,转载请注明原文链接:https://www.cnblogs.com/YY-zhang/p/15987070.html

浙公网安备 33010602011771号