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