【问题标题】:what is the best practice of handling time in R?在 R 中处理时间的最佳做法是什么?
【发布时间】:2010-10-09 14:52:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: r datetime


    【解决方案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"))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-22
          • 1970-01-01
          • 2016-03-20
          • 1970-01-01
          • 2010-11-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多