博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《数据科学:R语言实现》——3.4 使用日期格式
阅读量:6310 次
发布时间:2019-06-22

本文共 1199 字,大约阅读时间需要 3 分钟。

本节书摘来自华章出版社《数据科学:R语言实现》一 书中的第3章,第3.4节,作者:R for Data Science Cookbook 丘祐玮(David Chiu),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 使用日期格式

把每一个数据属性转换成合适的数据类型之后,我们可以看到employees和salaries中的一些属性是日期类型的。因此,我们可以计算雇员的出生日期和当前日期之间的年份数,进而得出每个雇员的年龄。这里我们会介绍如何使用内置日期函数和lubridate程序包来操作日期格式的数据。

准备工作
按照之前的教程,把导入数据的每个属性转换成正确的数据类型。并且,你需要按照3.2节“重命名数据变量”中的步骤,命名employees和salaries数据集的列名。
实现步骤
执行下列步骤,使用employees和salaries中的日期格式数据。
1.我们可以使用下列代码,加上或者减去日期格式属性中的一些天数:
screenshot
screenshot
screenshot

运行原理

完成上一个教程之后,employees数据和salaries数据应该完成了重命名,每一个属性也应该转换成了合适的数据类型。由于一些属性是日期类型的,我们可以使用日期函数来计算属性之间的时间间隔。
日期类型的数据支持算术运算,我们可以加上或减去一些天数。因此,我们首先展示了可以给hire_date加上30天。然后我们可以检查一下受雇日期是否真的加了30天。然后,我们可以计算birth_date属性和hire_date属性之间以天为单位的时间间隔,进而找出雇员开始在公司工作时的年龄。然而,减法操作只能告诉我们天数间隔,我们需要更多计算方法,支持除天数以外的时间间隔度量。所以,我们可以使用函数difftime确定不同单位下的时间间隔(例如,小时、天和周)。虽然difftime提供了更多的度量选择,但我们还需要更多计算来得到以月和年为单位的时间间隔。
为了简化日期计算,我们可以使用便捷的日期运算程序包lubridate。因为数据是年-月-日的格式,我们首先可以使用函数ymd把数据转换成POSIX格式。然后,我们可以使用区间函数计算hire_date和birth_date之间的时间跨度。接着,我们可以使用函数as.period计算时间跨度的长度。这可以让我们使用函数year获取每一个雇员生日和受雇日之间的年份数。
最后,为了计算雇员的年龄,我们可以使用函数now获取当前时间。然后,使用interval获取雇员生日和当前日期之间的时间区间。利用这些信息,我们最终可以使用函数year获取雇员的真实年龄。
更多技能
在使用lubridate程序包(版本1.3.3)的时候,你可能会收到下列报错信息:
screenshot

这个报错信息是由于本地配置问题而产生的。你可以通过设定locale为English_United States.1252来解决:

screenshot

转载地址:http://rjoxa.baihongyu.com/

你可能感兴趣的文章
深入探索JVM自动资源管理
查看>>
JS/CSS体积减少了67%,我们是如何做到的?
查看>>
冷启动问题:如何构建你的机器学习组合?
查看>>
从Jira到GitHub,详解Spring Framework问题跟踪系统的迁移过程
查看>>
.NET Core 2.1 Preview 2带来网络方面的改进
查看>>
Steve Thair谈DevOps on Windows的演变与面临的挑战
查看>>
Jakarta EE工作组正式成立
查看>>
讲讲我和Spring创始级程序员共同review代码的故事
查看>>
Windows原生运行Linux的技术细节
查看>>
Visual Studio 15.7预览版4改进Git、C++支持
查看>>
对象和作用域
查看>>
从 0 开始,vue 项目实战(二)
查看>>
不仅仅是手机,MWC现全球首例 5G NR 商用部署
查看>>
微软发起Java on Azure调查,呼吁Java社区积极参与
查看>>
C#的未来:托管指针
查看>>
AWS EC2 Run Command特性新增多重云脚本
查看>>
建设高效的DevOps平台:跨组织协作而不是互怼
查看>>
Udi Dahan对于业务逻辑重用以及微服务方面的观点
查看>>
回顾:在生产环境中使用Haskell
查看>>
Deno:来自Node之父的V8 TypeScript运行时
查看>>