【问题标题】:R, how to compute an operation between dates on selected rows?R,如何计算选定行的日期之间的操作?
【发布时间】:2021-10-02 15:11:21
【问题描述】:

我正在 R 中处理具有患者首次就诊和/或最后一次就诊日期的数据框,这样:

patient_ID date date_number max_date_number
3 2017-09-25 1 7
3 2019-03-05 7 7
5 2015-10-01 1 1
6 2010-04-15 1 7
6 2011-04-15 5 5

此表包含在visits_dataframe 变量中,计算方式如下:

visits_dataframe

患者

日期

date_numbers

max_date_numbers

visits_dataframe

我需要计算所有患者的第一次就诊和最后一次就诊之间的平均日期距离(如果有的话)。这将是每位患者的治疗总持续时间。

在此示例中,我想计算 3 患者 2019-03-05 和 2017-09-25 之间的距离,以及 @987654324 患者 2011-04-15 和 2010-04-15 之间的距离@ 病人。 在此示例中,我无法为5 患者计算它,因为她/他无法使用max_date_number

我尝试了这段代码,但没有成功:

visits_dataframe_durations

基本上,我必须使用这样的命令:

对于每个患者 ID:

  • 查找上次访问日期 (date_number == max_date_number)
  • 查找首次访问日期 (date_number == 1)
  • 计算上次访问和首次访问之间的距离 (thisDuration)
  • 将此持续时间保存到一般持续时间变量中 (generalDuration += thisDuration)

结束

计算平均持续时间 = 一般持续时间 / 患者人数

有人可以帮我解决这个问题吗?谢谢

【问题讨论】:

    标签: r dataframe date


    【解决方案1】:

    我们可以在dplyr 中做到这一点

    library(dplyr)
    visits_dataframe %>%
         mutate(dates = as.Date(dates)) %>%
         group_by(patients) %>%
         mutate(durations = dates[date_numbers == 1] - 
                    dates[date_numbers == max_date_numbers])
    

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      相关资源
      最近更新 更多