将时间重新格式化为可以操纵的数据

我有一个数据集,需要在格式化方面进行大量的清理工作,并且在某些时候我想要计算研究人员在钓鱼的时间。 如果捕鱼开始和停止的时间是正常格式,这很容易,但由于某些原因数据不是有用的十进制格式。 例如,早上10:45记录为10.45,而11:10将是11.10。

我已经尝试过让Excel使用冒号替换所有的句点(它不会这样做,而其他人已经试图帮助我使Excel合作)。 我可以考虑一些在R中这样做的方法,但我不知道如何继续。 首先,如果有一些方法可以将小数点后面的部分除以60,那么十进制格式将是有意义的。 那么,10.45将是10.75,减法不成问题。 或者,它也会工作,只是写一些简单的代码来代替冒号的时期,然后(我在想?)使用类似chron软件包的方式来处理它。

我不知道你将如何编写这些选项 - 有没有人有任何建议? 我认为除以60可以通过在期间之前和之后分解碎片的功能来实现(如粘贴的反面),但是我找不到这种功能的名称。 第一个也是我想象的更简单,虽然第二个实际上可能揭示了我在R中遇到的一个更大的问题,该问题试图弄清楚如何使命令变得一般化。 我明白我该如何强制它将10.45改为10:45,但是我希望我知道是否有一种格式只是为了说“XX.XX并改为XX:XX”而不管实际的数字是什么。 但我想一次只有一件事。


在没有例子的情况下,我为此呈现as.difftime

> d <- as.difftime('10.45', format='%H.%M')
> d
Time difference of 10.75 hours
> as.numeric(d)
[1] 10.75

为了您的评论,您必须确保您以字符串形式读取时间值。

Time.Start = c(9.10, 9.10, 9.10, 9.10, 9.10, 9.10)
Time.Stop = c(14.25, 14.25, 14.25, 14.25, 14.25, 14.25)

把它们变成字符串。 首先将它们作为字符串读取会更好,但我们可以用sprintf将它们拼凑起来:

Time.Stop <- sprintf('%.2f', Time.Stop)
Time.Start <- sprintf('%.2f', Time.Start)

然后解析并采取差异。 -正在返回类difftime的对象,与上面类似。

strptime(Time.Stop, format='%H.%M') - strptime(Time.Start, format='%H.%M')

## Time differences in hours
## [1] 5.25 5.25 5.25 5.25 5.25 5.25
## attr(,"tzone")
## [1] ""
链接地址: http://www.djcxy.com/p/38313.html

上一篇: Reformatting times into data that can be manipulated

下一篇: R regex gsub separate letters and numbers