R:根据日期为患者分配新的治疗和随访

R:根据日期为患者分配新的治疗和随访,r,R,给所有的R专家 我有一个地区60000个心血管疾病(CVD)条目的数据集。数据主要包括:患者人数、他来健康中心的日期和许多其他变量,如他的村庄、他的健康中心等 基于一个定义,即每个患者一年内只能进行一次就诊,我想将其应用于数据集。也就是说,我想在每位患者旁边指定这次就诊是新的(一年中的首次就诊)还是随访(一年中的重复就诊)。这是数据的str() > str(cvd1) 'data.frame': 59686 obs. of 51 variables: $ Age

给所有的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)的第五次就诊是(新的,在他第一次就诊一年之后)但他的第七次就诊是(随访,因为他是在2001年5月4日最后一次就诊的一年之内)


谢谢

我不知道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
Ptnum=c(1,2,1,4,1,2,1,3)
日期=c(“2000年1月1日”、“2000年1月1日”、“2000年2月24日”、“2006年3月26日”、“2001年5月4日”,
"05/05/2007","05/05/2001","05/05/2007")
cvddata=data.frame(Ptnum,date)
cvddata$date=as.date(日期,格式=“%d/%m/%Y”)
cvddat.ord$new1yr 365)
cvddat.ord
#---------------
Ptnum日期新1年
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

您需要将这些日期格式化为R日期类向量,然后按pt id和日期排序,然后使用比较相邻日期的函数使用
ave
(按id分组)。(由您)留下的模棱两可是所需的内容,例如,有一个由5次访问组成的字符串,每次访问间隔为6个月。亲爱的DWin,在str(cvd1)中,日期格式为.date。。请你进一步解释一下关于日期的观点好吗。。我是R的初学者。。没关系,我就这么做了。你例子中的“日期”列不是R日期。阅读
as.Date
ISOdate
。谢谢我刚刚更改了它。非常感谢。。。我甚至可以将随访期从365天改为我想要的天数..再次感谢..嘿!闰年呢!:-)这是一个很好的观点,但是,我不认为这会影响我的结果,如果我没有考虑它…谢谢: