【问题标题】:Selecting the median of three date variables选择三个日期变量的中位数
【发布时间】:2022-01-10 06:11:54
【问题描述】:

我试图从 R 中的三个变量中选择中间日期。对于另一段代码,我使用了pmin(见下文)。我想知道是否有人知道选择中间日期的类似功能。 hadmin1hadmin2hadmin3 采用日期时间格式。谢谢!

covidtest2 <- covidtest %>%
  mutate(
    hadmin1new = case_when(
      probid == 1 & thirdhosp == 1 ~ pmin(hadmin1, hadmin2, hadmin3),
      probid == 1 &
        thirdhosp == 0 ~ pmin(hadmin1, hadmin2),
      probid == 0 ~ hadmin1
    )
  ) %>% 

【问题讨论】:

    标签: r date median


    【解决方案1】:

    在基础 R 中,您可以这样做:(我自己编造了数据,因为您没有提供任何数据)

    set.seed(42)
    datetimes <- as.POSIXct(runif(18, max = 1e9), origin = '1970-01-01', tz = 'GMT')
    df <- data.frame(dt1 = datetimes[1:6], dt2 = datetimes[7:12], dt3 = datetimes[13:18])
    
    df$new <- mapply(\(x, y, z) median(c(x, y, z)), df$dt1, df$dt2, df$dt3) |> 
      as.POSIXct(origin = '1970-01-01', tz = 'GMT')
    df
                      dt1                 dt2                 dt3
    1 1998-12-28 00:47:23 1993-05-05 07:51:54 1999-08-14 23:10:47
    2 1999-09-11 18:43:33 1974-04-08 15:23:17 1978-02-04 08:27:04
    3 1979-01-25 19:12:14 1990-10-27 01:51:30 1984-08-25 14:40:22
    4 1996-04-25 15:53:46 1992-05-05 11:19:44 1999-10-15 19:08:42
    5 1990-05-03 14:38:38 1984-07-03 22:29:36 2000-12-31 01:33:48
    6 1986-06-14 01:19:09 1992-10-15 01:24:11 1973-09-21 19:22:41
                      new
    1 1998-12-28 00:47:23
    2 1978-02-04 08:27:04
    3 1984-08-25 14:40:22
    4 1996-04-25 15:53:46
    5 1990-05-03 14:38:38
    6 1986-06-14 01:19:09
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-27
      • 2015-04-06
      • 2014-04-09
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多