目录
1.日期和日期时间类型
R 中日期可以保存为 Date 类型,一般用整数保存,数值为从 1970-1-1 经过的天
数。
R 中用一种叫做 POSIXct 和 POSIXlt 的特殊数据类型保存日期和时间,可以仅包含日期部分,也可以同时有日期和时间。技术上,POSIXct 把日期时间保存为从 1970 年 1 月 1 日零时到该日期时间的时间间隔秒数,所以数据框中需要保存日期时用 POSIXct 比较合适,需要显示时再转换成字符串形式;POSIXlt 把日期时间保存为一个包含年、月、日、星期、时、分、秒等成分的列表,所以求这些成分可以从 POSIXlt 格式日期的列表变量中获得。日期时间会涉及到所在时区、夏时制等问题,比较复杂。
基础的 R 用 as.Date()、as.POSIXct() 等函数生成日期型和日期时间型,R 扩展包 lubridate 提供了多个方便函数,可以更容易地生成、转换、管理日期型和日期时间型数据。
载入扩展包的方式:
library(lubridate)
如果下面内容:
![]()
证明你没有安装此扩展包
此时需要安装扩展包,安装方式如下:
点击【程序包】,再点击【安装程序包】
然后,找到 China(Beijing 2)

然后找到需要安装的扩展包 lubridate

然后,点击【确定】即可,安装完成会出现如下内容

这次我们再此载入扩展包 lubridate

2.从字符串生成日期数据
函数 lubridate::today() 返回当前日期:
today()
返回:
![]()
函数 lubridate::now() 返回当前日期时间:
now()
返回:
![]()
在结果中,我们看到了 CST 字样,CST 是时区,这里使用了操作系统提供的当前时区。CST 不是一个含义清晰的时区,在不同国家对应不同的时区,在中国代表中国标准时间(北京时间)
用 lubridate::ymd(), lubridate::mdy(), lubridate::dmy() 将字符型向量转换为日期型向量,但是他们的输入方式不相同,y 表示年,m 表示月,d 表示日,如:
年 - 月 - 日:
ymd(c("2022-1-24","2022-01-24"))
返回:
![]()
月 - 日 - 年:
mdy(c("1-24-2022", "01-24-2022"))
返回:
![]()
日 - 月 - 年:
dmy(c("24-1-2022","24-01-2022"))
返回:
![]()
如果在年号只有两位数字时,默认对应到 1969-2068 范围。
lubridate::make_date(year, month, day) 可以从三个数值构成日期向量。如
make_date(2022, 1, 24)
返回:
![]()
lubridate 包的 ymd、mdy、dmy 等函数添加 hms、hm、h 等后缀,可以用于将字符串转换成日期时间。如
ymd_hms("2022-1-24 19:26:35")
返回:
![]()
结果显示中 UTC 是时区,UTC 是协调世界时 (Universal Time Coordinated) 英文缩写,是由国际无线电咨询委员会规定和推荐, 并由国际时间局 (BIH) 负责保持的以秒为基础的时间标度。UTC 相当于本初子午线 (即经度 0 度) 上的平均太阳时,过去曾用格林威治平均时 (GMT) 来表示. 北京时间比 UTC 时间早 8 小时,以 1999 年 1 月 1 日 0000UTC 为例,UTC 时间是零点,北京时间为 1999 年 1 月 1 日早上 8 点整。
在 Date()、as.DateTime()、ymd() 等函数中,可以用 tz= 指定时区,比如北京时间可指定为 tz="Etc/GMT+8" 或 tz="Asia/Shanghai"。
lubridate::make_datetime(year, month, day, hour, min, sec) 可以从最多六个数值组成日期时间,其中时分秒缺省值都是 0。如
make_datetime(2022, 1, 24, 19, 32, 36)
返回:
![]()
用 lubridate::as_date() 可以将日期时间型转换为日期型,如
as_date(as.POSIXct("2022-01-24 19:32:36"))
返回:
![]()
用 lubridate::as_datetime() 可以将日期型数据转换为日期时间型,如
as_datetime(as.Date("2022-01-24"))
返回:
![]()
3.日期显示格式
用 as.character() 函数把日期型数据转换为字符型, 如
x <- as.POSIXct(c('2022-1-24', '2022-01-24'))
as.character(x)
返回:
![]()
在 as.charact

之日期时间&spm=1001.2101.3001.5002&articleId=122673076&d=1&t=3&u=c82323bd1ee14fc7b0b529d6dd76f395)
330

被折叠的 条评论
为什么被折叠?



