私は処方データを扱っており、特定の期間にわたる個人の薬物遵守を測定する要約変数を生成したいと考えています。この変数は、対象日数の割合 (PDC) と呼ばれます。変数を作成する手順はわかっていますが、最後にループを実行できません。手順は Leslie らのドキュメントで概説されており、SAS コードが提供されています。http://www2.sas.com/proceedings/forum2007/043-2007.pdf
最初のステップは、データをワイド フォーマットに整理して、それぞれの個人が薬を服用した日と服用数を示す独自の行を作成することです。データフレームには、インデックス日、個人が処方箋を受け取った (研究に参加した) 最初の日付、および研究の終了日 (開始日 + 180 日間のフォローアップ) もあります。これはすべて正常に機能し、サンプル データフレームを次に示します。xd = 満了日、days_supply = その日に個人が取得したタブの数。
df[(1:4), c(1,2,3,4,5,6,42,43)]
ID xd.1 days_supply.1 xd.2 days_supply.2 xd.3 start_dt end_dt
1 Patient HAI0674228 2011-05-05 28 2011-05-11 28 2011-05-24 2011-05-05 2011-10-31
10 Patient HAI0937281 2011-01-06 28 2011-03-01 28 2011-03-28 2011-01-06 2011-07-04
12 Patient HAI1007704 2011-01-29 28 2011-03-01 28 2011-03-31 2011-01-29 2011-07-27
18 Patient HAI1028993 2011-05-17 30 2011-06-16 30 0 2011-05-17 2011-11-12
配列とループを使用する次のステップは、私が問題を抱えているものです。
最初に、フォローアップ期間 (180 日) の毎日のダミー変数を含む配列を作成し、各値を 0 に設定する必要があります (これは、毎日の投薬範囲の日記として機能します - はい/いいえ、錠剤を持っています)
lapply(1:180, function(i) print(i))->days2
days2[]=0
正常に動作します
次に、xd 変数と日数供給変数をグループ化する 2 つの配列をさらに作成する必要があります。目的は、これらが do ループを設定することです。個々の患者の日記を記入します。
df[(1:5), c(1,2,4,6,8,9)]->filldates
filldates
array(filldates)->filldates
is.array(filldates)
df[(1:5), c(1,3,5,7,8,9)]->days_supply
> days_supply
array(days_supply)->days_supply
is.array(days_supply)
正常に動作します
次に、投薬日誌を埋めるために、各配列 (日付と日数を埋める) の情報を取得するためのループを設定します。これは私が立ち往生している場所です。日記はこんな感じにしたい
ID Day 1 Day 2 Day 3 Day 4-Day29 Day 30 Day 31 Day 32 Day 33
X12344 1 1 1 1 0 0 1 1
これを行うためのループの設定方法についてアドバイスをいただければ幸いです。
前もって感謝します!
ここで使用される DF を生成するコード:
ID=c("1234", "1233", "1235", "1222") ###random IDs
dt_fill1=as.character(c("2011-05-05", "2011-01-06", "2011-01-29", "2011-05-17"))
days_supp1=c(28,28,28,30)
dt_fill2=as.character(c("2011-05-11", "2011-03-01", "2011-03-01", "2011-06-16"))
days_supp2=c(28,28,28,30)
st_date=as.character(c("2011-05-05", "2011-01-06", "2011-01-29", "2011-05-17"))
end_date=as.charachter(c("2011-10-31", "2011-07-04", "2011-07-27", "2011-11-12")
df=data.frame(ID, dt_fill1, days_supp1, dt_fill2, days_supp2, st_date, end_date)
df
より詳細な df:
ID=c("hai0674228", "hai0937281", "hai1007704", "hai1028993", "hai1095329", "hai1537305", "hai1706893", "hai1989514", "hai2202516", "hai2224780")
dt_fill1=as.character(c("2011-05-05", "2011-01-06", "2011-01-29", "2011-05-17", "2011-01-11", "2011-01-26", "2011-01-06", "2011-01-10", "2011-01-07", "2011-04-26" ))
days_supp1=c(28,28,28,30, 28,30,28,28,28,30)
dt_fill2=as.character(c("2011-05-11", "2011-03-01", "2011-03-01", "2011-06-16", "2011-02-08", "2011-03-14", "0", "2011-02-04", "2011-02-05", "2011-05-17"))
days_supp2=c(28,28,28,30,28,30,0,28,28,30)
dt_fill3=as.character(c("2011-05-24", "2011-03-28", "2011-03-31", "0", "2011-03-02", "2011-03-19", "0", "2011-03-02", "2011-03-07", "2011-06-14"))
days_supp3=c(30,28,28,0,28,30,0,28,28,30)
dt_fill4=as.character(c("2011-06-21", "2011-04-27", "2011-04-25", "0", "2011-03-30", "2011-04-15", "0", "2011-03-31", "2011-03-28", "2011-06-29"))
days_supp4=c(28,28,28,0,28,30,0,28,28,30)
dt_fill5=as.character(c("0", "2011-05-20", "2011-05-23", "0", "2011-05-02", "2011-05-12", "0", "2011-04-28", "2011-04-28", "0"))
days_supp5=c(0,28,28,0,28,30,0,28,28,0)
st_date=as.character(c("2011-05-05", "2011-01-06", "2011-01-29", "2011-05-17", "2011-01-11", "2011-01-26", "2011-01-06", "2011-01-10", "2011-01-07", "2011-04-26"))
end_date=as.character(c("2011-10-31", "2011-07-04", "2011-07-27", "2011-11-12", "2011-07-09", "2011-07-24", "2011-07-04", "2011-07-08", "2011-07-05", "2011-10-22"))
df=data.frame(ID, dt_fill1, days_supp1, dt_fill2, days_supp2, dt_fill3, days_supp3, dt_fill4, days_supp4, dt_fill5, days_supp5, st_date, end_date)
df