首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算不同治疗次数的治疗时间

计算不同治疗次数的治疗时间
EN

Stack Overflow用户
提问于 2019-08-23 08:19:12
回答 1查看 262关注 0票数 1

我试着计算下一次从我的医院提取的病人数据的治疗时间。每名病人可接受1-4行治疗。我的数据就是这样的:

代码语言:javascript
复制
df <- read.table(text = "Patient Treatment   Start
        A   End         2018-11-22
        A   Drug3       2015-03-10
        A   None        2015-02-20
        B   End         2017-11-09
        B   Drug1       2017-01-31
        B   Drug2       2017-05-16
        B   Drug1       2017-02-28
        B   None        2017-03-21
        C   End         2018-11-08
        C   Drug1       2011-08-02
        C   Drug2       2012-01-13
        C   Drug3       2013-12-04", 
    header = TRUE, 
    colClasses = c("character", "character", "Date"))

我试过group_bysummarise。这给了我结果,但没有那么漂亮,也不支持超过极限的药物:

代码语言:javascript
复制
library(dplyr)

Result <- df %>% 
    group_by(Patient) %>%
    summarise(Regimen1 = Treatment[1],
        Start1 = Start[1],
        TTN1 = (Start[2] - Start[1])/28,
        Regimen2 = Treatment[2],
        Start2 = Start[2],
        TTN2 = (Start[3] - Start[2])/28,
        Regimen3 = Treatment[3],
        Start3 = Start[3],
        TTN3 = (Start[4] - Start[3])/28,
        Regimen4 = Treatment[4],
        Start4 = Start[4],
        TTN4 = (Start[5] - Start[4])/28)

你能提出更好的解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 08:41:40

如果目标是计算每个患者的Time unTil Next (列TTN),则可以

  1. arrange数据按(Patient名称和) Start日期;
  2. group_by Patient名称;
  3. mutate一个额外的列TTN计算时间延迟(以天为单位),直到下一次治疗.
代码语言:javascript
复制
library(dplyr)

arrange(df, Patient, Start) %>% 
    group_by(Patient) %>%
    mutate(TTN = lead(Start) - Start) %>%
    ungroup()
#> # A tibble: 12 x 4
#>    Patient Treatment Start      TTN      
#>    <chr>   <chr>     <date>     <drtn>   
#>  1 A       None      2015-02-20   18 days
#>  2 A       Drug3     2015-03-10 1353 days
#>  3 A       End       2018-11-22   NA days
#>  4 B       Drug1     2017-01-31   28 days
#>  5 B       Drug1     2017-02-28   21 days
#>  6 B       None      2017-03-21   56 days
#>  7 B       Drug2     2017-05-16  177 days
#>  8 B       End       2017-11-09   NA days
#>  9 C       Drug1     2011-08-02  164 days
#> 10 C       Drug2     2012-01-13  691 days
#> 11 C       Drug3     2013-12-04 1800 days
#> 12 C       End       2018-11-08   NA days

数据

代码语言:javascript
复制
df <- structure(list(Patient = c("A", "A", "A", "B", "B", "B", "B", 
"B", "C", "C", "C", "C"), Treatment = c("End", "Drug3", "None", 
"End", "Drug1", "Drug2", "Drug1", "None", "End", "Drug1", "Drug2", 
"Drug3"), Start = structure(c(17857, 16504, 16486, 17479, 17197, 
17302, 17225, 17246, 17843, 15188, 15352, 16043), class = "Date")), class = "data.frame", row.names = c(NA, 
-12L))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57622298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档