R语言基础入门(8)之日期时间

目录

1.日期和日期时间类型

2.从字符串生成日期数据

3.日期显示格式

4.访问日期时间的组成值

5.日期舍入计算

 6.日期计算

 6.1 时间长度

 6.2 时间周期

 6.3 时间区间

7.基本 R 软件的日期功能

7.1 生成日期和日期时间型数据

7.2 取出日期时间的组成值

7.3  日期计算

练习


1.日期和日期时间类型

        R 中日期可以保存为 Date 类型,一般用整数保存,数值为从 1970-1-1 经过的天 数。         R 中用一种叫做 POSIXctPOSIXlt 的特殊数据类型保存日期和时间,可以仅包含日期部分,也可以同时有日期和时间。技术上,POSIXct 把日期时间保存为从 1970 年 1 月 1 日零时到该日期时间的时间间隔秒数,所以数据框中需要保存日期时用 POSIXct 比较合适,需要显示时再转换成字符串形式;POSIXlt 把日期时间保存为一个包含年、月、日、星期、时、分、秒等成分的列表,所以求这些成分可以从 POSIXlt 格式日期的列表变量中获得。日期时间会涉及到所在时区、夏时制等问题,比较复杂。         基础的 R 用 as.Date()as.POSIXct() 等函数生成日期型和日期时间型,R 扩展包 lubridate 提供了多个方便函数,可以更容易地生成、转换、管理日期型和日期时间型数据。

载入扩展包的方式:

如果下面内容:

证明你没有安装此扩展包

此时需要安装扩展包,安装方式如下:

点击【程序包】,再点击【安装程序包】

然后,找到 China(Beijing 2)

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

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

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

2.从字符串生成日期数据

        函数 lubridate::today() 返回当前日期

返回:

        函数 lubridate::now() 返回当前日期时间

返回:

在结果中,我们看到了 CST 字样,CST 是时区,这里使用了操作系统提供的当前时区。CST 不是一个含义清晰的时区,在不同国家对应不同的时区,在中国代表中国标准时间(北京时间)

        用 lubridate::ymd(), lubridate::mdy(), lubridate::dmy() 字符型向量转换为日期型向量,但是他们的输入方式不相同,y 表示m 表示d 表示,如:         年 – 月 – 日

返回:

        月 – 日 – 年

返回:

        日 – 月 – 年: 

返回:

如果在只有两位数字时,默认对应到 1969-2068 范围。

        lubridate::make_date(year, month, day) 可以从三个数值构成日期向量。如

返回:

        lubridate 包的 ymd、mdy、dmy 等函数添加 hms、hm、h 等后缀,可以用于将字符串转换成日期时间。如

返回:

结果显示中 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。如

返回:

        用 lubridate::as_date() 可以将日期时间型转换为日期型,如

返回:

        用 lubridate::as_datetime() 可以将日期型数据转换为日期时间型,如

返回:

3.日期显示格式

        用 as.character() 函数把日期型数据转换为字符型, 如

返回:

        在 as.character() 中可以用 format 选项指定显示格式,格式中 “%Y” 代表四位的公元年 ,“%m” 代表两位的月份数字,“%d” 代表两位的月内日期

如 %m/%d/%Y 表示 月-日-年

返回:

        “15Mar98” 这样的日期在英文环境中比较常见,但是在 R 中的处理比较复杂。在下面的例子中,R 日期被转换成了类似”Mar98″ 这样的格式,在 format 选项中用了 “%b” 代表三英文字母月份缩写,但是因为月份缩写依赖于操作系统默认语言环境,需要用 Sys.setlocale() 函数设置语言环境为”C”。示例程序如下

返回:

返回:

返回:

 包含时间的转换,

返回:

返回:

这里 “%H” 代表小时(按 24 小时制),“%M” 代表两位的分钟数字,“%S” 代表两位的秒数。

4.访问日期时间的组成值

lubridate 包的如下函数可以取出日期型或日期时间型数据中的组成部分:

  • year() 取出年
  • month() 取出月份数值
  • mday() 取出日数值
  • yday() 取出日期在一年中的序 ,元旦为 1
  • wday() 取出日期在一个星期内的序 ,但是一个星期从星期天开始,星期天为 1, 星期一为 2,星期六为 7。
  • hour() 取出小时
  • minute() 取出分钟
  • second() 取出秒

比如, 2022-1-24 是星期一,则 提取月份

返回:

提取日

返回:

提取日期在一个星期内的序

lubridate 的这些成分函数还允许被赋值,结果就修改了相应元素的值,如         将年份由 2022 赋值为 2000

返回:

        update() 可以对一个日期或一个日期型向量统一修改其组成部分的值,如

返回:

update() 函数中可以用 year, month, mday, hour, minute, second 等参数修改日期的组成部分。

5.日期舍入计算

lubridate 包提供了 floor_date(), round_date(), ceiling_date() 等函数,对日期可以用 unit= 指定一个时间单位进行舍入。时间单位为字符串,如 seconds, 5 seconds, minutes, 2 minutes, hours, days, weeks, months, years 等。         比如,以 10 minutes 为单位,floor_date() 将时间向前归一化到 10 分钟的整数倍:

返回:

        ceiling_date() 将时间向后归一化到 10 分钟的整数倍:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月21日
下一篇 2022年1月21日

相关推荐