【问题标题】:calculate duration for each patient.id in r [duplicate]计算r中每个患者的持续时间[重复]
【发布时间】:2019-08-12 21:04:32
【问题描述】:
     patient.id       date type 
5           1053 2006/12/14   DX    
2           1053  2007/4/21  HSCT

1           1053  2007/5/29   FU  
6           1053  2007/7/20   FU  
3           1053  2007/9/20   FU   
4           1053 2007/11/18   D1  
7           1138   2009/9/3   DX  
13          1138   2010/2/3 HSCT  
23          1138  2010/3/11   FU  
10          1138   2010/6/6   FU   
9           1138  2010/8/31   FU   
15          1138  2010/11/5   FU   
11          1138   2011/2/7   FU   
16          1138  2011/5/15   FU   
17          1138  2011/7/18   FU   
14          1138  2011/9/21   FU   
24          1138 2011/12/13   FU   
19          1138  2012/3/13   FU   
25          1138  2012/5/11   D1

【问题讨论】:

  • 例如,对于patient.id 1053,生存时间为2007/11/18-2006/12/14

标签: r


【解决方案1】:

R 基础解决方案:

> lapply(with(dat, split(date, patient.id)), function(x) diff(range(x)))
$`1053`
Time difference of 339 days

$`1138`
Time difference of 981 days

【讨论】:

  • 如果每个病人的最后一个类型是HSCT或D2,则右删失,标记为1,类型D1表示死亡标记为0。如何生成一列这样的数据
【解决方案2】:

使用dplyr 转换为日期格式,然后按患者分组并计算 max(date) - min(date)。

library(dplyr)
mydata %>% 
  mutate(date = as.Date(date, "%Y/%m/%d")) %>% 
  group_by(patient.id) %>% 
  summarise(Survival = as.numeric(max(date) - min(date)))

结果:

  patient.id Survival
       <int>    <dbl>
1       1053      339
2       1138      981

【讨论】:

  • 如何计算HSCT类型到最后一天类型的天数,因为DX表示诊断,HSCT表示移植。
  • 每个病人的倒数第二个数据,是病人的生存时间,(HSCT)表示造血干细胞移植,DX表示诊断
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 2017-09-16
  • 2019-01-02
相关资源
最近更新 更多