2017-05-26 61 views
-1

我有一個長格式的SAS數據集。干預計劃從2014年春季開始,直至2017年春季學期。所以共有7個學期(2014年春季,2015年春季,2016年春季,2017年春季)。在SAS中按組添加案例

不是每個人都參加了所有7個學期。一些參加了一次,從未回來,有些參加了兩次以上,但不一定是兩個學期的低。

所以每個人都有不同數量的病例。對於兩次參加的人,例如有2行,有5個參與者有5行。

我想每個人在數據集中有7行出於某種原因。 什麼可能是編程在SAS中執行此操作的最佳方式?

我真的很感激任何建議!

+0

你是說你想要表格有七行,每學期一個,然後是每個人的專欄? –

+0

在數據集中,我需要每個人七行。據我所知,我不想爲每個人提供專欄。數據集將如下所示:2014年春季/ 2014年秋季/ 2015年春季/ 2015年秋季/ 2016年春季/ 2016年秋季/ 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 tabulate中的printmiss選項,這將很容易地生成表格。

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