使用ITime和gtsummary显示时间“%H:%M:%S”的汇总统计信息

hlswsv35  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(82)

我的入院时间格式为POSIXct“1899-12-31 13:11:00”。我对这些数据/时间的日期不感兴趣,所以我使用lubridate包提取了小时、分钟和秒,并将其格式化为“%H:%M:%S”。然后我使用ITime更改了值的格式,ITime是一个以一天中的整数秒数存储的时间类。我转换为这种格式是因为我希望能够对入院时间(平均值、中位数、最小值/最大值)进行汇总统计。
到目前为止,一切似乎都很好。例如,我可以使用mean(sample_data$HOSP_ADMSN_TIME.x),R将输出“14:11:18”,这正是我想要的。我遇到的问题是,当我将HOSP_ADMSN_TIME.x传递给gtsummary时,我认为它将其视为连续变量,并且它在汇总表中输出的值不正确/对我来说没有意义。gtsummary中的入院时间平均值显示为57,078,而不是预期的“14:11:18”。
所以我的主要问题是,gtsummary是否可以使用ITime将这些时间戳视为整数,以便我能够计算汇总统计数据?也许我使用了错误的方法将此数据沿着到gtsummary。
样本数据集

# A tibble: 10 × 1
   HOSP_ADMSN_TIME.x  
   <dttm>             
 1 2021-04-19 10:00:00
 2 2021-05-02 09:18:00
 3 2021-09-09 15:06:00
 4 2021-08-17 13:10:00
 5 2022-01-18 11:44:00
 6 2021-10-13 20:33:00
 7 2021-05-06 19:09:00
 8 2021-08-04 12:49:00
 9 2021-11-15 11:00:00
10 2021-09-01 19:04:00

字符串
使用Lubridate剥离日期,然后转换为ITime

sample_data$HOSP_ADMSN_TIME.x \<- format(ymd_hms(sample_data$HOSP_ADMSN_TIME.x), "%H:%M:%S")

sample_data$HOSP_ADMSN_TIME.x \<- as.ITime(sample_data$HOSP_ADMSN_TIME.x)


检查算法是否工作并给出所需的输出

mean(sample_data$HOSP_ADMSN_TIME.x)
[1] "14:11:18"


将示例数据传递给gtsummary以创建汇总表

sample_data %\>%
  tbl_summary(
    label = list(HOSP_ADMSN_TIME.x \ ~ "Hospital Admission Time"),
    missing = "ifany",
    missing_text = "Missing",
    type = HOSP_ADMSN_TIME.x \ ~ "continuous2",
    statistic = HOSP_ADMSN_TIME.x \ ~ c("{mean}",
                                        "{median} ({p25}, {p75})",
                                        "{min}, {max}")
  ) %\>%
  bold_labels() %\>%
  modify_header(label \ ~ "**Variable**")


x1c 0d1x的数据

8hhllhi2

8hhllhi21#

使用chron::timesHOSP_ADMSN_TIME.x转换为时间对象对我来说很有效。

library(gtsummary)

df$HOSP_ADMSN_TIME.x <- format(as.POSIXct(df$datetime), "%H:%M:%S")
df$HOSP_ADMSN_TIME.x <- chron::times(df$HOSP_ADMSN_TIME.x)

df %>% 
  tbl_summary(
    include = c("HOSP_ADMSN_TIME.x"),
    label = list(HOSP_ADMSN_TIME.x ~ "Hospital Admission Time"),
    type = list(HOSP_ADMSN_TIME.x ~ "continuous2"),
    statistic = list(HOSP_ADMSN_TIME.x ~ c(
      "{mean}",
      "{median} ({p25}, {p75})",
      "{min}, {max}"
      )
    )
  )

字符串
输出


的数据
数据

df <- read.table(text="2021-04-19 10:00:00
2021-05-02 09:18:00
2021-09-09 15:06:00
2021-08-17 13:10:00
2022-01-18 11:44:00
2021-10-13 20:33:00
2021-05-06 19:09:00
2021-08-04 12:49:00
2021-11-15 11:00:00
2021-09-01 19:04:00", sep="\n", col.names="datetime")

相关问题