热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LubridateDomorewithdatesandtimesinR

Lubridate是一个R包,可以更容易地处理日期和时间。https:cran.r-project.orgwebpackageslubridatevignettesl

Lubridate是一个R包,可以更容易地处理日期和时间。
https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.html

Parsing dates and times解析日期

lubridate可以解析日期,按照y、m、d(在日期中出现的顺序进行提取,简化标准化日期的过程。

library(lubridate)ymd("20110604")# 年月日mdy("06-04-2011")#月,日,年dmy("04/06/2011")#日,月,年

在这里插入图片描述
Lubridate的解析函数可以处理各种格式和分隔符,这简化了解析过程。

如果日期包含时间信息,在函数的名字后面加上h, m,和/或s。
Ymd_hms是最常见的日期时间格式。
要读取带有特定时区的日期,在tz参数中提供该时区的正式名称。

arrive <- ymd_hms("2011-06-04 12:00:00", tz &#61; "Pacific/Auckland")#tz参数中提供该时区的名称&#xff0c;用于读取带有特定时区的日期
arriveleave <- ymd_hms("2011-08-10 14:00:00", tz &#61; "Pacific/Auckland")#设置太平洋地区的时间为2011-08-10 14:00:00 NZST
leave

在这里插入图片描述

Setting and Extracting information设置和提取日期

从日期时间中提取信息&#xff0c;函数为 second, minute, hour, day, wday, yday, week, month, year, tz。
还可以使用其中的每一个来设置(即更改)给定的信息。这将改变日期时间。
Wday和month有一个可选的label参数&#xff0c;该参数将它们的数字输出替换为工作日或月份的名称。

second(arrive)#arrive中的秒数提取second(arrive) <- 25#设置到达时间的秒数&#xff0c;这会对arrive进行修改
arrivesecond(arrive) <- 0wday(arrive)wday(arrive, label &#61; TRUE)#可选的label参数&#xff0c;该参数将它们的数字输出替换为工作日或月份的名称。

在这里插入图片描述

Time Zones时区

关于日期和时区有两件非常有用的事情。
首先&#xff0c;在不同的时区显示相同的时刻。
第二&#xff0c;通过将现有的时钟时间与新时区相结合来创建一个新的时刻。
这些是通过with_tz和force_tz完成的。

# 举例说明&#xff0c;如果是从太平洋的时间变成美国芝加哥的时间是多少
meeting <- ymd_hms("2011-07-01 09:00:00", tz &#61; "Pacific/Auckland")
with_tz(meeting, "America/Chicago")#如果是从美国芝加哥的时间变成太平洋的时间是多少
mistake <- force_tz(meeting, "America/Chicago")
with_tz(mistake, "Pacific/Auckland")

在这里插入图片描述

Time Intervals 时间区间

可以将时间区间保存为lubridate的interval类对象中

#求解arrive和leave时间的区间
auckland <- interval(arrive, leave)
aucklandauckland <- arrive %--% leave
auckland

在这里插入图片描述

jsm <- interval(ymd(20110720, tz &#61; "Pacific/Auckland"), ymd(20110831, tz &#61; "Pacific/Auckland"))
jsm

在这里插入图片描述

int_overlaps(jsm, auckland)#两个时间区间是否重叠

在这里插入图片描述

setdiff(auckland, jsm)#时间不重叠的部分

在这里插入图片描述
intervals的其他功能int_start, int_end, int_flip, int_shift, int_aligns, union, intersect, setdiff, %within%.

Arithmetic with date times有关时间的计算

Intervals是特定的时间跨度&#xff0c;有两个具体时间的时间跨度。
lubridate也提供了两个一般的时间跨度类:duration和Periods。
“d”&#xff1a;表示持续时间&#xff0c;用于开头
“e”&#xff1a;表示确切时间。

minutes(2) ## period
#> [1] "2M 0S"
dminutes(2) ## duration&#xff0c;“d”&#xff1a;表示持续时间&#xff0c;用于开头
#> [1] "120s (~2 minutes)"

在这里插入图片描述
Duration类提供数学上精确的结果。Duration的一年总是等于365天。
为了给出直观的结果&#xff0c;Duration与时间轴的波动方式相同。这使得它们对时钟时间建模很有用。
例如&#xff0c;在闰年的时候&#xff0c;duration是会给出真实时间&#xff0c;但是period可能会返回你想要的结果&#xff0c;直接变成下一年的日期

leap_year(2011) ## regular yearymd(20110101) &#43; dyears(1)ymd(20110101) &#43; years(1)leap_year(2012) ## leap year闰年ymd(20120101) &#43; dyears(1)
#>给出真实的时间
ymd(20120101) &#43; years(1)
#给出你想要的结果

在这里插入图片描述

meetings <- meeting &#43; weeks(0:5)#加上固定的时间&#xff0c;重复计算
meetings
meetings %within% jsm#是否在jsm的时间段内

在这里插入图片描述

auckland / ddays(1)#计算时间长度&#xff0c;几天
#> [1] 67.08333
auckland / ddays(2)#计算时间长度&#xff0c;以两天为单位
#> [1] 33.54167
auckland / dminutes(1)#计算时间长度&#xff0c;几分钟
#> [1] 96600

在这里插入图片描述

auckland %/% months(1)
#时间间隔与一个月相除&#xff0c;即表示时间间隔中有几个月
auckland %% months(1)
#时间间隔与一个月相除后的余数是多少

在这里插入图片描述

#将上面的计算结果进行标准化的输出
as.period(auckland %% months(1))
#> [1] "6d 2H 0M 0S"
as.period(auckland)
#> [1] "2m 6d 2H 0M 0S"

在这里插入图片描述
时间计算中可能会出现一些冲突或者错误
举例&#xff1a;
January 31st &#43; one month
结果可能为February 31st 根本不存在。March 4th ( January 31的后31天), or February 28th (如果是闰年的话)
这种就会出现多个结果&#xff0c;为了统一&#xff0c;提供以下解决方法。
如果想要结果为February 31st &#xff08;根本不存在的时间&#xff09;如果时间不存在&#xff0c;就返回na。以下是新版本version 1.3.0。
如果想要的结果是March 4th ( January 31的后31天), or February 28th (如果是闰年的话)&#xff0c;就使用特定的操作方式l %m&#43;%

jan31 <- ymd("2013-01-31")
jan31 &#43; months(0:11)floor_date(jan31, "month") &#43; months(0:11) &#43; days(31)jan31 %m&#43;% months(0:11)

在这里插入图片描述

Vectorization向量化

lubridate中的代码是向量化的&#xff0c;可以在交互和函数中使用

last_day <- function(date) {ceiling_date(date, "month") - days(1)
}
#用于实现计算这个月的最后天x<-ymd("20110604")
last_day(x)


推荐阅读
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • poj 3352 Road Construction ... [详细]
author-avatar
川妹-闲人_453
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有