在R中处理时间的最佳实践是什么?

在R中处理时间的最佳实践是什么?,r,datetime,R,Datetime,我正在使用一个调查数据集。它有两个字符串向量,开始和结束,分别表示一天中面试开始和结束的时间 它们是字符字符串,看起来像:“上午9:24”,“下午12:35”,等等。我正试图根据这两个因素来计算面试的持续时间。这样做的最佳方式是什么 我知道,对于日期,有很多classe或函数像as.date(),as.date(),chron(),或as.POSIXct()。因此,我正在查找类似于as.time()的内容,但找不到它。我是否应该添加一个虚构的日期,并将整个内容转换为POSIX()date-tim

我正在使用一个调查数据集。它有两个字符串
向量
开始
结束
,分别表示一天中面试开始和结束的时间

它们是
字符
字符串,看起来像:
“上午9:24”
“下午12:35”
,等等。我正试图根据这两个因素来计算面试的持续时间。这样做的最佳方式是什么

我知道,对于日期,有很多
classe
函数
as.date()
as.date()
chron()
,或
as.POSIXct()
。因此,我正在查找类似于
as.time()
的内容,但找不到它。我是否应该添加一个虚构的日期,并将整个内容转换为
POSIX()
date-time
class
,然后使用
difftime()


R
中处理时间的最佳实践是什么?

一个选项是使用正则表达式。如果您不熟悉它们,可以使用它们使用模式解析字符串。我会研究正则表达式,然后


希望对您有所帮助

您需要使用
strtime()
将字符串转换为日期。例如:

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
如果您只想输出数字,可以将其存储,然后以.numeric()的形式执行
,否则可以传递时间对象


希望这有帮助

最佳实践是使用lubridate软件包

然后在上面创建的日期-时间格式中使用difftime作为差异

hm(c("09:10", "09:02", "1:10"))
## [1] "9H 10M 0S" "9H 2M 0S"  "1H 10M 0S
difftime(time1, time2, tz,
         units = c("auto", "secs", "mins", "hours",
                   "days", "weeks"))