2016-05-18 7 views
0

私は、繰り返し測定されたレコードのマルチレベルデータセットを持っています(下記例)。
私はMLwiNでrecord_idで定義されたブロックのこれらの患者レベルの変数(age、date_admission、date_discharge)を平均化することが可能であることを知っています。
現時点では、滞在期間(date_discharge - date_admission)を試してみると、おそらくそれらは異なる行にあるため、NAとして表示されます。マルチレベルモデリングを試してみると、データセットはobs_id "1"と "8"(年齢がある場合)に制限されます。
多くのおかげで、アンヌマリーrecord_idで定義されたブロックの平均患者レベルの変数

obs_id record_id day age tn date_admission date_discharge 
1   1  0 40 122 12/02/2015 00:00   
2   1  1  90   
3   1  2  71   
4   1  3  71   
5   1  4  75   
6   1  5  73     
7   1  182       17/02/2015 00:00  
8   2  0 58 139 14/02/2015 00:00   
9   2  1  130   
10   2  2  119   
11   2  3  106   
12   2  4  102   
13   2  5  111     
14   2  182       19/02/2015 00:00 
+1

あなたのデータは分析のための適切なフォーマットに対応していません。たとえば、date_admission/date_dischargeなどです。 –

+0

私は同意します。なぜあなたは "平均" date_admissionをしたいですか?よりよい尺度は平均 'date_discharge-date_admission'です。 – lmo

+0

OK、私はそれをよく表現していないと思います。私がしたいのは、このデータセットをdate_discharge-date_admissionを抽出できる形式にフォーマットすることです。そしてその年齢はobs_id "1"ではなく、record_id "1"の全体に適用されます。ありがとう – Annemarie

答えて

0

私はあなたの主な質問は、(例えばlme4など)ほとんどのRルーチンで使用することができますされるように、形式にデータを取得する方法であると考えています。

Rの例を得るために、コンマをいくつか追加しました。次はR(そのうちの一つ、実際に、POSIXct)によって使用される内部日付形式に日付を変換:

lines <- "obs_id, record_id, day, age, tn, date_admission, date_discharge 
1   ,1  ,0 ,40 ,122 ,12/02/2015 00:00,  
2   ,1  ,1 , ,90 ,  , 
3   ,1  ,2 , ,71 ,  , 
4   ,1  ,3 , ,71 ,  , 
5   ,1  ,4 , ,75 ,  , 
6   ,1  ,5 , ,73 ,    , 
7   ,1  ,182 , ,  ,    ,17/02/2015 00:00 
8   ,2  ,0 ,58 ,139 ,14/02/2015 00:00,   
9   ,2  ,1 , ,130 ,  , 
10   ,2  ,2 , ,119 ,  , 
11   ,2  ,3 , ,106 ,  , 
12   ,2  ,4 , ,102 ,  , 
13   ,2  ,5 , ,111 ,    , 
14   ,2  ,182 , ,  ,    ,19/02/2015 00:00" 

data <- read.csv(textConnection(lines)) 
data$date_admission <- as.POSIXct(data$date_admission, format="%d/%m/%Y %H:%M") 
data$date_discharge <- as.POSIXct(data$date_discharge, format="%d/%m/%Y %H:%M") 

あなたは、患者のための番目のレコードごとに、入場料や放電の日付を持っている必要があります。これを行うには数多くの方法がありますが、その1つはdplyrパッケージを使用することです。最初にデータをrecord_idでグループ化し、その後、患者ごとに計算を行うことができます。私はdate_admissiondate_dischargeage列の最初と最後の値をとるが、(つまり、この場合にはあまり意味がありませんが)あなたはまた、平均値を計算することができ下:

library(dplyr) 

data <- data %>% group_by(record_id) %>% mutate(
    date_admission = first(date_admission), 
    date_discharge = last(date_discharge), 
    age = first(age), 
    duration = difftime(date_discharge, date_admission, "days")) 

dplyrに簡単にGoogleより多くの情報のためにあなたにパッケージの紹介をたくさん与えるでしょう。特にdata wrangling cheat sheetは非常に便利です。

+0

ありがとう、これはまさに私が失敗するように試みていたものです! – Annemarie

関連する問題