将小数转换为R,日分,小时和秒
问题描述:
如何将小数转换为天,小时,分和秒?将小数转换为R,日分,小时和秒
十进制将显示的分钟数,我想将其转换成任何它说“X days, Y hours, Z minutes and W seconds
”的字符串,或显示“DD:HH:MM:SS
”
我已经找到了几个帖子相似,但其中没有一个是在R
做过到目前为止,我的代码是:
seconds=55800
lengths=strftime(as.POSIXct(seconds, origin = Sys.Date(), tz = "UTZ"), format = "%d %H:%M:%S")
我需要一个新的原点但是。由于55800秒为15.5小时,结果显示19日15小时30分钟,因为起源基于今天的日期(19日)。我需要以某种方式创建一个通用的原点。
答
问题是输入是分钟数,但代码以秒开始。我已经假设了几分钟。
1)计算的天数,然后将转换的分钟数到POSIXct和产生使用sprintf
的字符串。没有包被使用。
# input
mins <- 55800/60
days <- mins %/% (24 * 60)
ct <- as.POSIXct(60 * mins, origin = "1970-01-01", tz = "UTC") # POSIXct
sprintf("%02d:%s", days, substring(ct, 12))
## [1] "00:15:30:00"
2)使用克隆氏病,并从它上面days
略短,并且避免了潜在的时间段错误:
library(chron)
sprintf("%02d:%s", days, times(chron(mins/(24 * 60))))
## [1] "00:15:30:00"
更新:固定/简化。新增(2)。
答
lubridate
软件包具有各种帮助程序,对于类似的用例很方便。
> require(lubridate)
> seconds_to_period(55800)
[1] "15H 30M 0S"
请给出一个例子和预期输出 – akrun
做一些除法和乘法是否如此复杂? – Tensibai
我已经添加了我的代码,并且我知道这个问题是什么,而不是如何解决它。之前我没有包括它,因为我确信可以采用更有说服力的方式。 @Tensibai - 不,不是,谁说这是? – sym246