63.关于date-time组件的获得与更改
2021-09-20 本文已影响0人
心惊梦醒
【上一篇:62.关于日期和时间之创建】
【下一篇:64.关于date-time组件的“四舍五入”】
前文讲了如何从字符串、组件获得日期-时间,本篇讲从组件获得日期-时间(make_datetime())的逆过程:从日期-时间得到组件。这一系列函数虽然多,但很好记忆,参数也少。
这些函数包括:year()、month()、day()、yday()、mday()、wday()、qday()、hour()、minute()、second()。
- 这些函数的功能是获得或更改date-time的component,例如:
year(x) #获得
year(x) <- value #更改
x:date-time对象
value:数字对象
- 关于输入(具体如下),总结下来就是只需知道常用的就好,其他的用到的时候查一下就好了。
year():Date-time必须是POSIXct、POSIXlt、Date、Period或任何其他可转换为POSIXlt的对象。
day系列函数:输入是POSIXct, POSIXlt, Date, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries或者fts 对象
month()、hour()、minute()、second():Date-time必须是POSIXct, POSIXlt, Date, Period, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries和fts对象。
- month()和wday()的参数比其他的略多,默认返回十进制的数字,即一年的第几个月份。若设置label=TRUE且abbr=TRUE(默认设置),返回值是月份/周几的英文简称;设置label=TRUE且abbr=TRUE,返回值是全称。且当label=TURE时,返回的是一个ordered factor。
PS:例如ymd_hms()函数的返回值是一个POSIXct对象,ymd()返回一个Date对象。用str()函数可以看出对象的类型。 - wday()函数有个week_start参数,表示按照ISO(国际标准化组织)惯例,一周的哪一天开始:1表示周一,7(默认)表示周日,当label = TRUE时,这将是返回因子的第一级。您可以设置lubriate .week.start选项来全局控制该参数。
wday(
x,
label = FALSE,
abbr = TRUE,
week_start = getOption("lubridate.week.start", 7),
locale = Sys.getlocale("LC_TIME")
)
其实我更关心把这些component单独拿出来有什么应用呢?看了书之后就有了认知:在flights数据集中,可以通过一系列的转换得到全年中周几出发的航班数量最多或最少;还可以看单个小时内,第几分钟出发的航班的平均到达延误情况。
关于更改date-time component的方法
更改component的方法处理上述方法之外,还可以用update()函数。上述更改compnent的方法会直接更改原来的值,update()函数则不会。
(datetime <- ymd_hms("2016-07-08 12:34:56"))
update(datetime, year = 2020, month = 2, mday = 2, hour = 2)
而且如果某个compnent设置大了,函数还会自动进位滚动