R语言包_lubridate

Parsing dates and times

install.packages("lubridate")
library(lubridate)
ymd("20150904")
ymd("2015-9-4")
ymd("2015/9/04")
dmy("04/09/15")
ymd_hms("2011-06-04 12:00:00")
x = ymd_hms("2011-08-10 14:05:08", tz = "Pacific/Auckland")
class(x)

Setting and Extracting information

second(x)
minute(x)
hour(x)
day(x)
month(x)
year(x)
wday(x,label = T)
yday(x)
week(x)

Time Zones

#奥克兰9点电话会议,求芝加哥几点开
meeting <- ymd_hms("2011-07-01 09:00:00", tz = "Pacific/Auckland")
with_tz(meeting, "America/Chicago")

#芝加哥如果误认为9点开,那么奥克兰接到电话的时间
mistake <- force_tz(meeting, "America/Chicago")
with_tz(mistake, "Pacific/Auckland")

Time Intervals

arrive <- ymd_hms("2011-06-04 12:00:00", tz = "Pacific/Auckland")
leave <- ymd_hms("2011-08-10 14:00:00", tz = "Pacific/Auckland")
auckland <- interval(arrive, leave)
auckland <- arrive %--% leave
auckland
jsm <- interval(ymd(20110720, tz = "Pacific/Auckland"), ymd(20110831, tz = "Pacific/Auckland"))
#if trival overlap
auckland
jsm
lubridate::setdiff(auckland, jsm)

Other functions that work with intervals include int_start, int_end, int_flip, int_shift, int_aligns, union, intersect, setdiff, and %within%.

Arithmetic with date times

两种类型的时间数据:
- period
- duration

需要两种类型的时间数据的原因是:时间并不是精准的。
例如闰年366天。period为366,但是duration为365.

# period
minutes(2)
years(1)
# duration
dminutes(2)
dyears(1)   #always 365 days
# regular year
leap_year(2011)
leap_year(2000)

ymd(20110101) + dyears(1)
## [1] "2012-01-01 UTC"
ymd(20110101) + years(1)
## [1] "2012-01-01 UTC"
leap_year(2012)  ## leap year
## [1] TRUE
ymd(20120101) + dyears(1)
## [1] "2012-12-31 UTC"
ymd(20120101) + years(1)
## [1] "2013-01-01 UTC"

关于时间取整,取模的其他计算

meeting <- ymd_hms("2011-07-01 09:00:00", tz = "Pacific/Auckland")
meetings <- meeting + weeks(0:5)
jsm <- interval(ymd(20110720, tz = "Pacific/Auckland"), ymd(20110831, tz = "Pacific/Auckland"))
meeting
meetings
jsm
meetings %within% jsm

arrive <- ymd_hms("2011-06-04 12:00:00", tz = "Pacific/Auckland")
leave <- ymd_hms("2011-08-10 14:00:00", tz = "Pacific/Auckland")
auckland <- interval(arrive, leave)
auckland
#days i stay
auckland/edays(1)
#minutes i stay
auckland/eminutes(1)

auckland%/%months(1)
auckland%%months(1)
as.period(auckland%%months(1))
as.period(auckland)

Others

jan31 <- ymd("2013-01-31")
jan31 + months(0:11)

floor_date(jan31, "month") + months(0:11) + days(31)

jan31 %m+% months(0:11)

Vectorization

last_day <- function(date) {
    ceiling_date(date, "month") - days(1)
}
last_day(jan31)

参考资料

lubridate

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lubridateR语言中用于处理日期和时间数据的工具。它提供了一组简单而灵活的函数,可以解析、操作和计算日期和时间对象。lubridate主要分为两类函数:处理时点数据(time instants)和处理时段数据(time spans)。对于时点数据,lubridate提供了函数来解析各种日期和时间格式的数据,并提供了函数来提取日期和时间的各个组成部分,如年、月、日、小时、分钟和秒。对于时段数据,lubridate提供了函数来计算和操作日期和时间之间的差异,如计算两个日期之间的天数、小时数和分钟数等。 以下是使用lubridate处理日期和时间数据的一些常见操作: 1. 解析日期和时间数据: 使用`ymd()`函数解析年-月-日格式的日期数据。 使用`ymd_hms()`函数解析年-月-日 时:分:秒格式的日期时间数据。 2. 提取日期和时间的组成部分: 使用`year()`函数获取日期或时间的年份。 使用`month()`函数获取日期或时间的月份。 使用`day()`函数获取日期或时间的日。 使用`hour()`函数获取日期或时间的小时。 使用`minute()`函数获取日期或时间的分钟。 使用`second()`函数获取日期或时间的秒。 3. 计算日期和时间之间的差异: 使用`interval()`函数创建时间间隔对象。 使用`%--%`运算符计算两个日期或时间之间的差异。 4. 格式化日期和时间数据: 使用`format()`函数将日期和时间对象格式化为指定的字符串格式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值