R日期与时间

1.R时间类型

date:日期型(只有日期,没有时分秒)

POSIXct:日期时间型(常用于数据框中

POSIXlt:将日期时间保存为一个列表

as.Date():生成日期型

注1:对yyyy-mm-dd或yyyy/mm/dd格式可直接变为date类型

注2:对非标准的格式,可加format=" "参数,%Y、%m、%d等与数据本身的格式相对应,从而生成标准的date类型

as.POSIXct():将年月日格式的日期转换为标准日期,也可以用format对应数据格式

注1:如果日期仅有年月,必须添加日才能读入(可以利用paste函数

注2:可以用tz=参数指定时区

as.POSIXlt():将R日期时间变为POSIXlt类型,之后就可以用列表方法进行处理

取出列表中数值:y<-POSIXlt(POSIXct(" "))

                                  1900+y$year, 1+y$mon, y$mday, y$hour, y$min, y$sec

注1:取出对应数值时,year要加1900mon要加1

注2:列表元素wday取值0表示星期天,1-6为星期一到星期六

日期计算:

(1)所有的比较运算均可用于日期类型

(2)可以给日期加减一定的秒数

(3)两个日期不能相加

(4)difftime(time1, time2, units='days'):计算相减的天数

注1:units参数可换,记得加s

注2:使用时要用c()包裹该函数,否则会有单位,即c(difftime(time1, time2, units=' '))

2.R扩展包lubridate

library(lubridate) #载入扩展包,之后的函数均在此包之中

 

today():返回当前日期

now():返回当前日期和时间

ymd()、mdy()、dmy():将字符型向量转换为日期型"year-month-day"

注:用哪个函数由字符型向量的格式决定,结果均转换成如上述格式的日期型向量

注:在上述三个函数之后添加_hms_hm_h等后缀,可以对应转换带有时分秒的字符型向量

make_date(year, month, day):用三个数字构成日期向量

make_datetime(year, month, day, hour, min, sec):六个数字组成日期时间

as.date():将日期时间型转换为日期型

as.datetime():将日期型转换为日期时间型

取出日期型或日期时间型数据x中的部分:(还可以进行赋值修改)

year(x)、month(x)、mday(x):取出年月日

yday(x)、wday(x):取出日期在一年/一周(星期天为1)中的序号

hour(x)、minute(x)、second(x):取出时分秒

update(x, year=…,month=…,…):可以对日期或日期型向量统一修改组成部分的值

注:参数包括year,month,mday,hour,minute,second

日期舍入计算:

floor_date()、ceiling_date()、round_date():将日期以时间单位向前/后/最近进行舍入

舍入参数:unit=" " 指定舍入的时间单位,如seconds,10 seconds,minutes,5 minutes,hours,days,weeks等等

注:若单位是星期,用参数week_start=7指定以星期天开始,week_start=1指定以星期一开始

日期型数据转换为字符型数据

x <- as.POSIXct(c("xxxx-xx-xx","xxxx-xx-xx"))

as.character(x,format=' ')

注:format指定显示格式——%Y,%m,%d,%H(24h制),%M,%S

注:想使用三英文字母月份缩写用%b,但需要先使用Sys.setlocale()函数设置语言环境为C

       old.lctime <- Sys.getlocale('LC_TIME')

       Sys.setlocale('LC_TIME','C')

三种时间类型:

(1)时间长度(duration):按整秒进行计算,以作为单位

POSIXct型的时间之间可以相加减,得到时间长度

时间长度可以相加,也可以乘常数,也可以给日期型数据加减时间长度,日期时间平移(以秒加)

生成时间长度类型数据:dxxxs():dyears()、dweeks()、ddays()、dhours()、dminutes()、dseconds

注:不要忘记加s,生成的数据都是xx秒

注2:可以用unclass()将生成的时间长度转换为普通数值

(2)时间周期(period):以各自的正常周期作为单位,不需要联系秒数

生成时间长度:xxxs():years()、weeks()、days()、hours()、minutes()、seconds()

注1:生成的数据就是对应周期的数据,可以相加或乘常数

注2:月度周期与已有函数名冲突,故使用period(num,units="month")生成

辨析:duration是按照秒数平移对应时间日期(不考虑闰年等情形),period是按照正常日历来平移的

(3)时间区间

生成时间区间的三种方法:

运算符%--%:d1%--%d2(d1、d2是两个日期时间型数据)

interval(start, end):start、end是两个日期时间型数据

as.interval(a, start=b):a是一个时间长度数据(用dxxxs()生成),b是开始日期

访问时间区间的端点:int_start()、int_end()

时间类型转换:

as.duration():将时间区间转换为时间长度

as.period(din,unit=" "):将时间区间转换为指定时间周期的个数,其中din是时间区间,unit参数中可以是week、month、minute等等各种周期

int_shift(din,by=dxxxs(a)):平移时间区间,其中din是时间区间,by中是平移长度

int_overlaps(din1,din2):判断两个时间区间是否有交集

***计算周岁函数

***求交集的函数

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值