首页 > 解决方案 > 将 Excel 持续时间数据导入 R 时遇到问题(使用 GUI EZR)

问题描述

在这个上扯掉我的头发。我花了几个小时才让 rJava 启动并运行(因为 mac OS X el capitan 不想与 Java 玩得很好)以加载特定于 excel 的数据导入包等。但最终这对我的问题没有帮助,而我几乎是在我的智慧尽头。请帮忙。

基本情况是这样的:

拥有跨越几年时间的简单 Excel 数据。所以我要导入的两列是时间(持续时间)和年份(2016、2017 等)。

在 Excel 中,数据的格式为 [h]:mm:ss,因此可以正确显示(数据与一个月内的工作小时数有关,因此通常类似于 80:xx:xx ~ 120:xx:xx)。我知道在 excel 中,尽管单元格的格式如上,并且只显示相关的小时数,但实际上 excel 已在该小时数数据中附加了一个(不相关的、任意的)日期。我已经搜索和搜索,发现在 excel 处理日期/时间/持续时间的方式中无法解决这个限制。

我通过R指挥官GUI中的“导入数据->从excel数据集导入”菜单项将这些数据导入R,而不是控制台。

但是,当将数据导入 R 时,数据显示为单个数字,例如大约。110 小时转换为 4.xxxxx,而不是 hh:mm:ss。因此,在运行分析和生成绘图等时,不会显示实际(有意义的)110:xx:xx 类型数据,而是显示完全没有意义的 4.xxxxxx。

如果我更改 excel 单元格的格式以显示日期和时间,而不是使用 [h]:mm:ss 单元格格式,R 会错误地将数据解释为同样无用的内容,例如 1901/02/04 05:上午 23 点

我已经安装并加载了各种包,例如 xlsx、XLConnect、lubridate 等,但至少从 GUI 中,R 如何解释导入时的 excel 数据并没有任何区别。

请告诉我我该怎么做

a) 将原始数据编辑为 R 将理解为 hh:mm:ss 格式的持续时间(仅是持续时间)的格式,或

b) 导入后从 R 中格式化当前数据,以便它以正确的方式显示数据,而不是无用的数字或任意日期/时间?

[请注意:当给出需要执行的命令等时,我可以使用控制台。但是我需要找到一个最终允许从 GUI 中导入和/或操作数据的解决方案,而不是通过在控制台中输入一堆命令,因为最终用户(不是我)的编程能力为零并且不能使用控制台,并且只会通过 GUI 使用 R。]

标签: rexceldatedurationlubridate

解决方案


您的代码是以秒为单位从 excel 导入数据吗?

library(lubridate)
duration <- lubridate::as.duration(400000)
as.numeric(duration, "hours")

111.1111

as.numeric(duration, "days")

4.62963

seconds_to_period(400000)

“4d 15H 6M 40S”


推荐阅读