【问题标题】:Compare time in R比较 R 中的时间
【发布时间】:2014-05-26 15:00:49
【问题描述】:

我有两列,比如 A 和 B(HH:MM 格式的时间)

  A       B
00:00   06:00

str(A) 和 str(B) 给出“字符”。

我想进行比较,例如,

Comment <- ifelse(hour_part(A) < hour_part(B), "Dead","NONE")

我想用 R 来做。

如何在 R 中做到这一点?

【问题讨论】:

    标签: r time timestamp


    【解决方案1】:

    试试

    ifelse(strptime(A, "%H:%M") < strptime(B, "%H:%M"), "Dead", "NONE")
    

    (请注意,此解决方案将小时和分钟转换为今天的日期时间)

    【讨论】:

      【解决方案2】:

      与Christian的回答类似,只使用difftime

      ifelse(difftime(A, B) < 0, "Dead", "None")
      # [1] "Dead"
      

      数据:

      A <- strptime("00:00", "%H:%M")
      B <- strptime("06:00", "%H:%M")
      

      【讨论】:

        【解决方案3】:

        使用此测试数据:

        DF <- data.frame(A = "00:00", B = "06:00", stringsAsFactors = FALSE) # test data
        

        1) 字符类 这适用于原始字符表示:

        hour_part <- function(x) as.numeric(sub(":.*", "", x)) # can optionally omit as.numeric
        Comment <- ifelse(hour_part(DF$A) < hour_part(DF$B), "Dead", "NONE")
        

        2) 时间类如果这不是您想要对 DF 做的唯一事情,那么最好先将它们转换为 "times" 类。

        library(chron)
        
        to.times <- function(x) times(paste0(x, ":00"))
        DF2 <- transform(DF, A = to.times(A), B = to.times(B))
        Comment <- ifelse(hours(DF2$A) < hours(DF2$B), "Dead", "NONE")
        

        注意:下次请提供可重现的测试数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-04
          • 2018-02-28
          • 2020-10-10
          • 2020-06-09
          • 1970-01-01
          • 2020-07-16
          • 2017-04-22
          • 2015-12-05
          相关资源
          最近更新 更多