私は以下のようなデータセットを持っています。人は「パッシブ」、「アクティブ」、「その他」のいずれかになります。人が「アクティブ」になる前に、人が「パッシブ」である週数を計算したいと思います。変数 'start_week'は、 'passive'呪文がいつ始まるかを示します。ある人が複数の「パッシブ」呪文を持っている場合、次の行で観測が再開されますが、start_weekは別です。SASは特定の瓶の複数の呪文の持続時間を計算します
ID y_1449 y_1448 y_1449 y_1450 y_1451 y_1452 y_1501 ... y_1608 start_week
01 passive passive passive passive active active active ... 5
02 other passive active active active passive active ... 3
02 other passive active active active passive active ... 7
04
...
N other other other other passive active active ... 6
私が持っているコードは、唯一のスペルでの観測の期間を計算することができますが、観測が繰り返し発生しているとき、何かがうまくいかないと期間のどちらが正しく計算されています。私は次のコードを持っている:
%let period = y_1449-y_1452 y_1501-y_1553 y_1601-y_1608;
%let passive = 'passive';
%let active = 'active';
data want;
data have;
array y(*) $period;
transition_to_active=0;
weeks=0;
active_week;
do i=start_week to 62;
if y(i) in &passive. then do;
weeks=weeks+1;
end;
if y(i) in &active. and y(i+1) in &active.
and y(i+2) in &active. and y(i+3) in &active. then do;
transition_to_active=1;
active_week=i;
leave;
end;
end;
run;
ここ「をtransition_toアクティブは、」人は「アクティブ」と「active_week」から「受動的」人が、この遷移することを週を示しているからtranistionを行っているかどうかを示します。 期間の計算が複数の呪文ではうまくいかない理由は誰にも見えますか?
あなたのデータ、アルゴリズムの説明、およびあなたの実装は、多少矛盾しています。すべてのレコード例では、start_weekがアクティブな週の(1から始まる)インデックスに設定されていますが、受動的な週ではありません。なぜあなたはアクティブに移行をマークするために連続した4週間を必要としますか?実際に何が起こっているのかを表示し、「何かが間違っている」というよりむしろそれが間違っている理由を説明してください。 –