0

すべてのRの専門家に。

ある地域の心血管疾患(CVD)の60000エントリのデータセットがあります。データは主に、患者数、彼がヘルスセンターに来た日付、および彼の村、彼のヘルスセンターなどの他の多くの変数で構成されています。

各患者は1年に1回しか訪問できないという定義に基づいて、それをデータセットに適用したいと思います。つまり、今回の訪問が新規(1年の最初の訪問)であるか、フォローアップ(1年の繰り返しの訪問)であるかを、各患者の横に割り当てたいと思います。これは私のデータの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回目の訪問は(フォローアップ、1年以内に来る)です。ptnum(1)の5回目の訪問は(新規、最初の1年後に来る)ですが、7回目の訪問は(最後の訪問である2001年4月5日から1年以内に来たため、フォローアップ)です。

ありがとうございました

4

1 に答える 1

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
于 2012-05-10T10:34:02.037 に答える