9.R日期时间


(学习资料参考北京大学李东风老师《R语言教程》)

9 R日期时间

9.1 R日期和日期时间类型

R日期可以保存为Date类型, 一般用整数保存,数值为从1970-1-1经过的天数。

R中用一种叫做 POSIXctPOSIXlt 的特殊数据类型保存日期和时间, 可以仅包含日期部分,也可以同时有日期和时间。 技术上,POSIXct把日期时间保存为从1970年1月1日零时到该日期时间的时间间隔秒数, 所以数据框中需要保存日期时用POSIXct比较合适, 需要显示时再转换成字符串形式;POSIXlt把日期时间保存为一个包含年、月、日、星期、时、分、秒等成分的列表, 所以求这些成分可以从POSIXlt格式日期的列表变量中获得。 日期时间会涉及到所在时区、夏时制等问题, 比较复杂。

基础的R用 as.Date()as.POSIXct() 等函数生成日期型和日期时间型, R扩展包lubridate提供了多个方便函数, 可以更容易地生成、转换、管理日期型和日期时间型数据。

library(lubridate)

ps.这步很重要,一定要先导入包才能使用日期
在这里插入图片描述

9.2 从字符串生成日期数据

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

结果如下:
在这里插入图片描述

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

结果如下:
在这里插入图片描述
(结果显示中出现的CST是时区, 这里使用了操作系统提供的当前时区。 CST不是一个含义清晰的时区, 在不同国家对应不同的时区, 在中国代表中国标准时间(北京时间)。)

  1. 用lubridate::ymd(), lubridate::mdy(), lubridate::dmy()将字符型向量转换为日期型向量,如:
ymd(c("1998-3-10", "2018-01-17", "18-1-17"))
mdy(c("3-10-1998", "01-17-2018"))
dmy(c("10-3-1998", "17-01-2018"))

结果如下:在这里插入图片描述

  1. 在年号只有两位数字时,默认对应到1969-2068范围
  2. lubridate::make_date(year, month, day) 可以从三个数值构成日期向量。 如:
make_date(1998, 3, 10)

在这里插入图片描述

  1. lubridate包的 ymdmdydmy 等函数添加 hmshmh 等后缀, 可以用于将字符串转换成日期时间。 如:
ymd_hms("1998-03-16 13:15:45")

结果如下,这里的UTC是是时区, UTC是协调世界时(Universal Time Coordinated)英文缩写, 是由国际无线电咨询委员会规定和推荐, 并由国际时间局(BIH)负责保持的以秒为基础的时间标度。 UTC相当于本初子午线(即经度0度)上的平均太阳时, 过去曾用格林威治平均时(GMT)来表示. 北京时间比UTC时间早8小时, 以1999年1月1日0000UTC为例, UTC时间是零点, 北京时间为1999年1月1日早上8点整。
在这里插入图片描述
7. 在 Date()as.DateTime()ymd() 等函数中, 可以用 tz= 指定时区, 比如北京时间可指定为 tz="Etc/GMT+8"tz="Asia/Shanghai"
8. lubridate::make_datetime(year, month, day, hour, min, sec)可以从最多六个数值组成日期时间, 其中时分秒缺省值都是0。 如:

make_datetime(1998, 3, 16, 13, 15, 45.2)

在这里插入图片描述

  1. lubridate::as_date() 可以将日期时间型转换为日期型,如:
as_date(as.POSIXct("1998-03-16 13:15:45"))

(这时就会忽略后面的时间,输出的是日期)在这里插入图片描述

  1. lubridate::as_datetime() `可以将日期型数据转换为日期时间型,如:
as_datetime(as.Date("1998-03-16"))

在这里插入图片描述

9.3 日期显示格式

  1. as.character() 函数把日期型数据转换为字符型, 如:
x <- as.POSIXct(c('1998-03-16', '2015-11-22'))
as.character(x)

输出结果如下:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值