2012-05-10 8 views
0

に基づいてフォローに患者を割り当てる。..R:新しい、すべてのRの専門家に日付

私は地域で心血管疾患(CVD)の60000のエントリのデータセットを持っています。データは主に、患者番号、保健所に来た日付、村、保健所などの多くの変数から構成されます。

各患者には年、それをデータセットに適用したいと思います。つまり、この訪問が新しい場合(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 ... 

これは私が何をしたいのか説明するための単なる一例である:

Rの日付オブジェクトので

cvddata$date = dmy(date) 

として日付をフォーマットする

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) 

、Ptnum(1)、最初の訪問新しい場合、ptnum(3)の3回目の訪問は(フォローアップ、1年以内に来る)です。 ptnum(1)の5回目の訪問は(新しい、最初の1年後に)来るが、7回目の訪問は(2001年4月5日の最後の1年以内に来たのでフォローアップ)。

dmyがどこから来るか

+0

あなたがPTのID、日付ごとに並べ替えた後、RのDateクラスベクトルとしてこれらの日付をフォーマットする必要があり、その後、隣接する日付を比較する関数を使用して 'ave'(idでグループ化)を使用します。あいまいな(あなたによって)左が必要なものです。例えば、それぞれ6か月で区切られた5回の訪問の列がありました。 –

+0

親愛なるDWin、 日付は.date..h str(cvd1)と書かれています。 あなたは日付についてのあなたの意見をさらに教えてくださいますか?私はRの初心者です。 thats fine私はちょうどそれは.. –

+0

あなたの例の "日付"列は_not_ Rの日付です。 'as.Date'と' ISOdate'を読んでください。 –

答えて

2

わからないあなたに感謝します。私は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 
+0

ありがとう非常にありがとう... 私は365から私が望む日にフォローアップ期間を変更することもできます。ありがとう。 –

+0

ちょっと!うるう年はどう? :-) –

+0

それは良い点ですが、私はそれを考慮しなかった場合、私の結果に影響を与えるとは思わないです。ありがとう:) –

関連する問題