选择三个日期变量的中位数

Posted

技术标签:

【中文标题】选择三个日期变量的中位数【英文标题】: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
    )
  ) %>% 

【问题讨论】:

【参考方案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

【讨论】:

以上是关于选择三个日期变量的中位数的主要内容,如果未能解决你的问题,请参考以下文章

日期6.27 Python练习001

三值策略的中位数

HTML5 日期输入 6 位数年份

可以将字符串日期转换为mysql DateTime吗?

Lesson 1 数据集的建立

在 O(logn) 中找到三个有序数组的中位数