R语言入门——日期的处理(一)
lubridate函数包的使用
- 引言
- 目的
- 文章结构
- lubridate包的主要函数简介
- lubridate包简介
- 常识
- 尝试解决的问题
- 获取实时日期
- 自定义日期
- 时间 ymd、mdy、dmy
- make_datetime
- 时间类型的转化函数
- lubridate包中常用函数汇总
引言
目的
R软件做为一款数据处理的软件,自然能够处理日期格式的数据。但是R语言里的函数众多,对于许多初学者不知道如何去系统的学习使用。我将花两个篇幅去介绍处理日期的函数,本文系统介绍R语言里的lubridate函数包。
文章结构
本文先介绍基本的R语言日期处理的常识知识,然后在具体的介绍lubridate函数包里的函数使用。下图是文章结构的展示。
lubridate包的主要函数简介
lubridate包简介
在数据中日期的出现场景很多,也会出现很多技术问题,如何随心所欲的去创建一个时间序列去匹配已经有的数据?怎么处理已经读入的现有的日期数据?那么lubridate包他来了,他就是一个专注解决日期技术的一个包。由于篇幅和能力有限,这篇文章要介绍的也不能面面俱到。只能为读者开个头,更加深入的问题,希望读者去读该包的帮助文档。当然我们也会把本文要解决的问题列出来,并努力讲清楚。
常识
1、日期数据主要有七部分组成:年、月、日、时、分、秒、时区。所以在大的方面分为两部分。
日期型数据: 不含具体时间的日期数据
日期时间型数据: 包含具体时间的日期数据
2、R语言中的日期的类属性是:Date、整数存储。默认从1970年1月1日开始往后的天数。如果读入的数据时整数的同志也不要担心,自行运算便可得到对应日期,当然R语言内部接受默认的日期向量化运算。
例如:1970-01-02储存的整数为1。
尝试解决的问题
下面是本文lubridate包要解决的问题
1、能够实时获取日期型数据和日期时间型数据。
2、自定义生成公式化的日期数据。(Date型)
3、实现日期型数据和日期时间型数据的转化。
4、列出提取Date类中的年月日时分秒等元素。
获取实时日期
先介绍获取日期的函数now
和today
函数,按着惯例先介绍函数的参数,由于两个函数的参数比较相似,我们只贴出now
函数的函数体:
function (tzone = "")
with_tz(Sys.time(), tzone)
<bytecode: 0x0000000023316550>
<environment: namespace:lubridate>
接着是运行代码效果以及注释:
> today() # 获取当日的 年月日 需要载入lubridate包才可以使用
[1] "2020-03-29"
> lubridate::today() # 获取当日的年月日 不需要载入包
[1] "2020-03-29"
> # 以下函数区别同上 只备注功能
> now() # 获取当日的 年月日 时分秒 时区
[1] "2020-03-29 10:38:33 CST"
> lubridate::now()
[1] "2020-03-29 10:38:33 CST"
上面的注释已经很明朗,我们只解释下CST的含义。他是操作的时候你的电脑ip所在的时区,一般会和你的常识一致,所以不用太过纠结。
自定义日期
时间 ymd、mdy、dmy
构建时间一般是需要字符数据的,这部分的三个函数识别的格式可以是-
分割,也可以是/
分割的。即:
“2020-3-29”或者“2020/3/29”
我们以年月日的函数为例子贴出函数参数和函数体:
function (..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"), truncated = 0)
.parse_xxx(..., orders = "ymd", quiet = quiet, tz = tz, locale = locale, truncated = truncated)
<bytecode: 0x0000000014df6118>
<environment: namespace:lubridate>
下面是运行例子以及注释:
> # 本例子以单个字符为例子,可以向量化处理
> (da = ymd("2020-3-28")) # 年月日
[1] "2020-03-28"
> class(da) # 查看数据类型
[1] "Date"
> mdy("3-28-2020")
[1] "2020-03-28"
> dmy("28-3-2020")
[1] "2020-03-28"
> # 当然以下字符格式也可以识别
> ymd("2020/3/28")
[1] "2020-03-28"
这里不再进行解释啥,在自定义的时候也常常用到下面的函数。
make_datetime
下面是该函数的参数和函数体,从中我们可以看出该函数的参数很齐全可以随意的生成year, month, day, hour, min, sec,
。
function (year = 1970L, month = 1L, day = 1L, hour = 0L, min = 0L, sec = 0, tz = "UTC")
{lengths <- vapply(list(year, month, day, hour, min, sec), length, 1, USE.NAMES = FALSE)if (min(lengths) == 0L) {.POSIXct(numeric(), tz = tz)}else {N <- max(lengths)C_update_dt(.rep_maybe(origin, N), year = .rep_maybe(year, N), month = .rep_maybe(month, N), yday = integer(), mday = .rep_maybe(day, N), wday = integer(), hour = .rep_maybe(hour, N), minute = .rep_maybe(min, N), second = .rep_maybe(sec, N), tz = tz)}
}
<bytecode: 0x0000000016744c60>
<environment: namespace:lubridate>
下面是一些例子。
make_datetime() # 默认输出 UTC 为本初子午线上平均太阳时。
make_datetime(year = 2020L, month = 3L, day = 29L, hour = 0L, min = 0L, sec = 0, tz = "UTC") # 输出当下日期
时间类型的转化函数
最后介绍下转化函数,这一步不会改变内参数,但是方便统一格式进行运算。 as_date
, as_datetime
这里仅仅贴出该函数的参数,就不再写示例代码了。
> as_date
standardGeneric for "as_date" defined from package "lubridate"
function (x, ...)
standardGeneric("as_date")
standardGeneric("as_date")
<bytecode: 0x000000002339a140>
<environment: 0x000000002338dae8>
Methods may be defined for arguments: x
Use showMethods("as_date") for currently available ones.
> as_datetime
nonstandardGenericFunction for "as_datetime" defined from package "lubridate"
function (x, ...)
{standardGeneric("as_datetime")
}
code: 0x00000000233d1488>
<environment: 0x00000000233c5d88>
Methods may be defined for arguments: x
Use showMethods("as_datetime") for currently available ones.
lubridate包中常用函数汇总
在lubridate包还有其他函数,现在把常用的提取日期各个元素函数汇总如下表:
函数 | 含义 |
---|---|
year | 取出年 |
month | 取出月 |
mday | 取出日 |
yday | 取出一年中的第几天(元旦为1) |
wday | 取出周几(周天为1,周六为7) |
hour | 取出时 |
minute | 取出分 |
second | 取出秒 |
R语言入门——日期的处理(一)相关推荐
- 【万字长文】R语言入门学习路线与资源汇总
本篇推文就不介绍为什么需要学R了,你能打开这篇文章,说明你有学习R的想法或者正在学习R的路上. 今天简单介绍下R语言的学习路线以及R学习资源汇总. 下面涉及到的R语言书籍我打包了PDF文件,有需要的在 ...
- R语言入门之Hello world
R语言入门之Hello world 作者:雨水/家辉,日期:2016-12-20,CSDN博客:http://blog.csdn.net/gobitan 摘要:R语言被称为统计语言.在数据分析上用得很 ...
- <<R语言入门与实践>>读书笔记
这是一个java小码农的跨界试探,如果你对R感兴趣可以买本R语言入门与实践,因为这里只记录了本人觉得有用的基本知识点.如果你只是看个乐呵,祝你有所收获. 序 数据分析具备三个属性 可再现性 自动化 沟 ...
- R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据、日期范围之外的数据、日期之后的数据、日期之前的数据
R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据.日期范围之外的数据.日期之后的数据.日期之前的数据 目录 R语言基于日期范围筛选数据实战(Subse ...
- r语言x c(-1 -2),【软件】R语言入门之向量
"R语言入门开篇,向量(vector)相关知识的介绍" R语言是一款优秀统计学编程语言,本文介绍R语言的几个重要命令,以及R语言中非常重要的一种数据结构-向量(Vector)的相关 ...
- R语言入门4---R语言流程控制
流程控制语句在任何语言中都是非常重要的,通过流程控制语句编程者能够根据业务逻辑在程序中设计合理的循环.分支,实现程序各种各样强大的功能.一般实现任一算法的控制结构都可以分为顺序结构.分支结构.循环 ...
- R语言-时间日期函数
R语言时间日期函数 1. 返回当前日期时间,有两种方式: Sys.time() date() 举例 format(Sys.time(), "%a %b %d %X %Y %Z")# ...
- R语言入门——常用函数50个
R语言函数入门50个基本函数 0引言 1.入门准备操作及函数 1.1R版本介绍以及IDE的选择 1.2IDE及其常用的快捷键 2.空间操作以及纠错函数 2.1 ? .??.help.demo.exam ...
- R语言入门——猜数小游戏
R语言入门--猜数小游戏 题目介绍 使用代码(2种方法) 运行结果 题目介绍 设计一个猜数字的游戏:计算机随机生成一个1~100 之间的整数,然后由用户猜测所产生的随机数.根据用户猜测的情况给出不同提 ...
最新文章
- Spring 面向切面编程
- Jmeter性能测试之后置处理器Json提取器的使用
- 剑指offer:扑克牌的顺子问题
- PHP 汉字转拼音(首拼音,所有拼音)
- Longest Palindromic Substring
- 南怀瑾先生说中风急救关键(非常推荐!!)
- 怎样使用计算机网络,教大家怎样用电脑发出wifi信号,让手机共享!
- sklearn——决策树基础概念
- SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 4)
- 打乱 数字_“142857”金字塔中的神秘数字,其中隐藏什么秘密?
- Python开发制作酷狗和QQ音乐下载器
- IOMeter存储测试工具
- 单片机中SDZ是什么意思_单片机里sp是什么意思啊
- 蚁群算法java实现_简单蚁群算法 + JAVA实现蚁群算法
- 大数据24小时:九章云极宣布获近亿元B轮融资,我国成功研发智能辅助驾驶系统
- 关于C++、C#实现EXCEL数据库批量导入数据库万行以上数据效率问题
- 1990 Count the Number of Experiments
- 如何做好技术布道——用影响影响影响
- 【hihocoder】#1082 : 然而沼跃鱼早就看穿了一切
- 上海财经应用统计考python_上海财经大学应用统计专硕考研经验帖
热门文章
- 调试记录:上电LED不断闪烁,芯片不工作,按复位键后正常
- 获得用户输入的一串字符,分别统计出其中英文字母、空格、数字和其他字符的个数
- 1、Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
- 开发rpg制作游戏用的角色人物素材图片,《石器时代》,共20张图片
- signature=08ce2c8d499ae4231026d9d74e0bb0a6,[实例] x509 命令(输出证书序列号)
- 南阳 oj 兰州烧饼
- 使用Hexo的helper-live2d插件自定义博客看板娘
- 解决博客园添加hexo看板娘无法加载问题
- 合肥达内培训php,合肥达内PHP培训PHP安全模式
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)