热门标签 | 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)


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
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社区 版权所有