2017-05-26 2 views
-1

私は長い形式のSASデータセットを持っています。介入プログラムは、春学期の2014年から始まり、春学期まで2017年に始まった。したがって、7学期(2014春と秋、2015春と秋、2016春と秋、2017春)があります。SASでグループ別にケースを追加する

誰もがすべての7つの学期に参加していません。何人かは一度参加して帰ってこなかった人もいましたが、2回以上参加した人もいましたが、必ずしも2人ではありませんでした。

したがって、それぞれの個体は異なる数の症例を有する。たとえば、2回参加した人は2行、5回参加した人は5行です。

何人かの理由で誰もがデータセット内に7行を持ちたいと思っています。 SASでこれを行うための最良のプログラミング方法は何でしょうか?

本当にありがとうございます。

+0

あなたはテーブルに7つの行、1つの学期ごとに1つずつ、そして各個人に1つの列が必要だと言っていますか? –

+0

データセットでは、各個人に7つの行が必要です。私が理解する限り、私は各個人のコラムを望んでいません。データセットは、次のようになります:Spring 2014/Fall 2014/Spring 2015/Fall 2015/Spring 2016/Fall 2016/Spring 2017.そして、各学期の変数の列があります。それは理にかなっていますか?私はこのウェブサイトでテーブルを描く方法を知らない...!ごめんなさい! – Brainupgraded

答えて

0

PROC EXPANDはおそらく最も直接的な方法ですが、観測された範囲の開始点/終了点を超えて外挿することはなく、定期的な間隔を必要とするという制約があります間隔)。

proc expand data=your_data out=expanded_data from=semiyear extrapolate method=none; 
    by student; 
    id semester_date; 
run; 

semester_dateは、一般的に各半期の開始に対応する日付変数です。

この場合、おそらくもっと簡単にテーブルを生成するproc tabulateprintmissオプションを使用すると簡単です。

ods output table=out_table; 
proc tabulate data=your_data; 
    class student semester; 
    tables student,semester/printmiss misstext=' '; 
run; 
ods output close; 

これをメインデータセットにマージすると、これはすべての学生*セメスターの組み合わせの行になります。

+0

ありがとう!誰かがProc SQLを使って構文を提案したので、非常に簡単で簡単でした。しかし、私はあなたの仕事にも本当に感謝しています!私はProc Expandについて知らなかったし、通常はProc Tabulateを使わないので、たくさん学んだ。すぐに解決策を掲載します。 – Brainupgraded

関連する問題