14

我正在使用调查数据集。它有两个字符串vectors,startfinish,分别表示采访开始和结束的时间。

它们是character看起来像:"9:24 am"、、"12:35 pm"等等的字符串。我正在尝试根据这两个计算面试的持续时间。这样做的最佳方法是什么?

我知道,对于日期,有很多classes 或functions,如as.date()as.Date()chron()as.POSIXct()。所以我一直在寻找类似的东西as.time(),但找不到。我是否应该只附加一个虚构的日期并将整个内容转换为POSIX()date-time class,然后使用difftime()

处理时间的最佳做法是R什么?

4

3 回答 3

15

您需要使用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()如果您只想输出数字,则可以执行操作,否则您可以传递时间对象。

希望这可以帮助!

于 2009-02-25T21:28:11.730 回答
1

一种选择是使用正则表达式。如果您不熟悉它们,它们用于使用模式解析字符串。我会研究正则表达式,然后这里是 r 中的函数

希望能帮助到你

于 2009-02-25T02:51:45.920 回答
0

最佳实践是使用 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"))
于 2017-06-27T07:41:50.320 回答