R:根据日期将患者分配到新患者并进行随访

时间:2012-05-10 08:41:46

标签: r

所有R专家..

我在一个地区有60000个心血管疾病(CVD)条目的数据集。这些数据主要包括:患者人数,他来到保健中心的日期以及许多其他变量,如他的村庄,他的健康中心等。

根据每个患者在一年内只允许一次访问的定义,我想将其应用于数据集。也就是说,如果这次访问是新的(一年中的第一次访问)或随访(一年中的重复访问),我想在每位患者旁边分配。这是我的str()数据。

> str(cvd1)
'data.frame':   59686 obs. of  51 variables:
 $ Age           : num  3532642 3555351 3575931 3599113 3622295 ...
 $ Centre        : Factor w/ 8 levels "L","M","N","SH",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Date          : Date, format: "2006-11-21" ...
 $ DoB           : Date, format: "1966-01-01" ...

  $ Ptnum          : Factor w/ 7469 levels "5011","5057",..: 4398 2105 2105 2105 2105 4352 1304 1304 1304 1304 ...
  $ Sex           : Factor w/ 3 levels "F","M","UNKNOWN": 1 1 1 1 1 2 1 1 1 1 ...

这只是一个例子来说明我想要做的事情:

list = 1:8
Ptnum = c(1,2,1,4,1,2,1,3)
date = c("01/01/2000", "01/01/2000","24/02/2000", "26/03/2006", "04/05/2001",
"05/05/2007","05/05/2001","05/05/2007")
cvddata = data.frame(Ptnum, date)

将日期格式化为R日期对象

 cvddata$date = dmy(date)

所以,Ptnum(1),第一次访问是新案例,ptnum(1)的第3次访问是(跟进,即将在一年内)。 ptnum(1)的第5次访问是(新的,在他第一次访问后的第一年),但他的第7次访问是(跟进,因为他是在距离最后一年,也就是04/05/2001的一年内来的)。 / p>

谢谢

1 个答案:

答案 0 :(得分:2)

不确定dmy的来源。我会用as.Date

来做
Ptnum = c(1,2,1,4,1,2,1,3)
date = c("01/01/2000", "01/01/2000","24/02/2000", "26/03/2006", "04/05/2001",
"05/05/2007","05/05/2001","05/05/2007")
cvddata = data.frame(Ptnum, date)
cvddata$date = as.Date(date, format="%d/%m/%Y")
cvddat.ord$new1yr <- with(cvddat.ord, 
                        ave(as.numeric(date), Ptnum, 
                                  FUN=function(x) c(1000, diff(x) ) > 365) )
cvddat.ord
 #---------------
  Ptnum       date new1yr
1     1 2000-01-01      1
3     1 2000-02-24      0
5     1 2001-05-04      1
7     1 2001-05-05      0
2     2 2000-01-01      1
6     2 2007-05-05      1
8     3 2007-05-05      1
4     4 2006-03-26      1