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

时间:2009-02-24 17:21:30

标签: r datetime

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

它们是character字符串,如:"9:24 am""12:35 pm",依此类推。我试图根据这两个来计算面试的持续时间。这样做的最佳方式是什么?

我知道,对于日期,有很多classefunctionas.date()as.Date()chron()或{{1} }}。所以我一直在找as.POSIXct()之类的东西,却找不到它。我是否应该附加一个补充日期并将整个事件转换为as.time()日期时间POSIX(),然后使用class

difftime()处理时间的最佳做法是什么?

3 个答案:

答案 0 :(得分: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(),否则你可以传递时间对象。

希望这有帮助!

答案 1 :(得分:1)

一个选项是使用正则表达式。如果你不熟悉它们,它们用于使用模式解析字符串。我会研究正则表达式然后here are the functions in r

希望有所帮助

答案 2 :(得分:0)

最佳做法是使用lubridate包

https://www.rdocumentation.org/packages/lubridate/versions/1.5.6/topics/hm

<li class="hidden">
            <a href="#">Albania</a>
        </li>

然后使用difftime获取上面创建的日期时间格式的差异 https://stat.ethz.ch/R-manual/R-devel/library/base/html/difftime.html

hm(c("09:10", "09:02", "1:10"))
## [1] "9H 10M 0S" "9H 2M 0S"  "1H 10M 0S