個人の「ステータス」を説明する週ごとの変数の範囲があります (2010 年の第 1 週から 2012 年の第 17 週まで)。
変数は次の式で与えられます。
y_1001, y_1002,...y1052, y1101, y1102,......y_1217
変数の期間を次のように定義します。
%let period = y_1001-1052 y_1101-y1148;
また、開始日と終了日として与えられた治療期間があります。私の課題は、患者が治療を中止してから 1 週間後のy_ 変数によって与えられるステータスを見つけることです。
私は SAS にあまり詳しくありませんが、私の考えは、週のカウンターに基づいて正しい y_ 変数を "選択" することでした。たとえば、期間の開始 (2010 年の第 1 週) からの週数をカウントし、治療は終了します。
このように治療が終わるまで数週間かかります
week_count = 1 + intck( 'week.2', '1JAN2010'd, end_treatment_date, 'd');
しかし、このカウントに基づいて対応する y_ 変数を取得するにはどうすればよいでしょうか?
period 変数をループして各人の week_count 変数に対応する数を選択する方法について無益な検索を行った後、私は別の方法で行くことを考えました...このようなことを言います。
array weeks(*) .
do i = 1 to dim(weeks) by 1;
if week_count = i then end_status = y_10&i;
end
...しかし、配列の次元と週数および年数との間に不一致があることを考慮に入れるための変更があります。
しかし、私の課題は、次の部分を機能させることです...
if week_count = i then end_status = y_10&i;
SAS がループ インデックスに基づいて正しい y_ 変数を選択するようにするにはどうすればよいですか? これは非常に単純な問題のように思えますが、どういうわけか解決策を見つけることができませんでした。正しい y_ 変数を定義する際に変数 "i" を入力として使用する方法はありませんか?
誰かがいくつかのヒントを投げることができれば、本当に感謝しています。