灵活的日期时间处理包——lubridate

一直想跟大家介绍Hadley Wickham大神写的lubridate包,如果使用该包,你会觉得日期时间型数据可以非常简单而灵活的处理和解析。例如,在实际应用场景中,如何将杂乱的日期字符转换为日期格式;如何返回日期所属的年、季度、月、周数、日、周几等,甚至时时分秒等;如何计算两个时间之间的年数、月数、天数等。下面就逐一介绍一些重要且常用的函数:


is.Date(x)

该函数用来判断对象是否为日期型数据。

is.Date('2016-03-16')

is.Date(as.Date('2016-03-16'))

is.Date(as.Date('2016-03-16 22:56:33'))

0?wx_fmt=png


now()

返回系统的日期时间

Sys.Date()

这是base包中的函数,返回系统日期

now()

Sys.Date()

0?wx_fmt=png


parse_date_time()

这是一个重磅函数,可以将格式各样的日期时间字符转换为日期时间类型的数据,其中函数中有一个重要的参数,即orders,通过该参数指定可能的日期格式顺序,如年-月-日或月-日-年等顺序。

下面通过例子来说明,例如,在会员信息中往往会出现格式各样的日期时间字符,如:

x <- c('20131113','120315','12/17/1996','09-01-01','2015 12 23','2009-1, 5','Created on 2013 4 6')

parse_date_time(x, orders = c('Ymd','mdy','dmY','ymd'))

0?wx_fmt=png
上面各种奇形怪状的日期字符,统统转换成了正确的日期格式。


round_date()

floor_date()

ceiling_date()

这三个函数实际上是截断函数,即将日期或日期时间型数据取整到不同的单位,如年、季、月、日、时等。区别在于第一个是四舍五入取整,第二个是向下取整,第三个是向上取整。举几个例子就明白了:

x <- as.POSIXct("2016-03-16 12:34:59")

x


#四舍五入取整

round_date(x,'hour')

round_date(x,'day')

round_date(x,'year')

0?wx_fmt=png
#向下取整

floor_date(x,'hour')

floor_date(x,'day')

floor_date(x,'year')

0?wx_fmt=png
#向上取整

ceiling_date(x,'hour')

ceiling_date(x,'day')

ceiling_date(x,'year')

0?wx_fmt=png


year()

quarter()

month()

week

day()

wday()

hour()

minute()

second()

这组函数可以返回所属日期的年、月、日、时、分、秒等。例如:

0?wx_fmt=png


days_in_month()

返回所属月份的最大天数

x <- as.Date('2015-01-01')

y <- x + months(0:11)

y

days_in_month(y)

0?wx_fmt=png


%m+%

由于每个月的最后天数不一样,如果直接在某个月份的最后一天加上指定的月数就会出现错误,这时就得考虑使用%m+%函数了。例如:

x <- as.Date('2015-01-31')

y <- x + months(0:11)

y

0?wx_fmt=png
y2 <- x %m+% months(0:11)

y2

0?wx_fmt=png
这样就非常灵活的避免了错误的出现。


time_length()

该函数可以非常方便的计算两个日期之间的间隔,包括年、月、日、时、分、秒的间隔。例如:

time1 <- ymd_hms('1989-07-17 17:33:21')

time2 <- now()

#设置两个时间的区间

time_interval <- interval(time1,time2)

time_interval

time_length(time_interval,'year')

time_length(time_interval,'month')

time_length(time_interval,'day')

time_length(time_interval,'hour')

time_length(time_interval,'minute')

time_length(time_interval,'second')

0?wx_fmt=png

OK,关于日期时间型数据的处理函数就介绍到这里,其实这么多常用的函数基本上能够解决工作中的需求。如需了解lubridate包中的更多函数,可查看相应的帮助文档。



每天进步一点点2015

学习与分享,取长补短,关注小号!

0?wx_fmt=jpeg
      长按识别二维码 马上关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值