在 R 中处理时间的最佳做法是啥?
Posted
技术标签:
【中文标题】在 R 中处理时间的最佳做法是啥?【英文标题】:what is the best practice of handling time in R?在 R 中处理时间的最佳做法是什么? 【发布时间】:2010-10-09 14:52:18 【问题描述】:我正在使用调查数据集。它有两个字符串vectors
、start
和finish
,分别表示面试开始和结束的时间。
它们是character
字符串,看起来像:"9:24 am"
、"12:35 pm"
,等等。我正在尝试根据这两个计算面试的持续时间。这样做的最佳方法是什么?
我知道,对于日期,有很多 classe
s 或 function
s,例如 as.date()
、as.Date()
、chron()
或 as.POSIXct()
。所以我一直在寻找类似as.time()
的东西,但找不到。我是否应该只附加一个虚构的日期并将整个内容转换为POSIX()
日期时间class
,然后使用difftime()
?
R
处理时间的最佳做法是什么?
【问题讨论】:
【参考方案1】:您需要使用strptime()
将字符串转换为日期。例如:
strptime("9:24 am",format="%I:%M %p")
那么你就可以通过将一个与另一个分开来获得差异:
strptime("9:24 am",format="%I:%M %p")-strptime("12:14 am",format="%I:%M %p")
Time difference of 9.166667 hours
如果你只是想要这个数字,你可以存储它然后做一个as.numeric()
,否则你可以传递时间对象。
希望这会有所帮助!
【讨论】:
【参考方案2】:一种选择是使用正则表达式。如果您不熟悉它们,它们用于使用模式解析字符串。我会研究正则表达式然后here are the functions in r
希望对你有帮助
【讨论】:
【参考方案3】:最佳实践是使用 lubridate 包
https://www.rdocumentation.org/packages/lubridate/versions/1.5.6/topics/hm
hm(c("09:10", "09:02", "1:10"))
## [1] "9H 10M 0S" "9H 2M 0S" "1H 10M 0S
然后使用 difftime 来区分上面创建的日期时间格式 https://stat.ethz.ch/R-manual/R-devel/library/base/html/difftime.html
difftime(time1, time2, tz,
units = c("auto", "secs", "mins", "hours",
"days", "weeks"))
【讨论】:
以上是关于在 R 中处理时间的最佳做法是啥?的主要内容,如果未能解决你的问题,请参考以下文章