在SAS中按组添加案例

时间:2017-05-26 19:28:43

标签: merge sas dataset

我有一个长格式的SAS数据集。干预计划从2014年春季学期开始,一直持续到2017年春季学期。所以有7个学期(2014年春季和秋季,2015年春季和秋季,2016年春季和秋季,2017年春季)。

不是每个人都参加了所有7个学期。有些人参加了一次而且从未回来过,有些人参加过两次以上,但不一定是两个学期。

所以每个人都有不同数量的病例。例如,对于参加过两次的人来说,有两行,有一些有5次参与有5行。

由于某种原因,我希望每个人在数据集中都有7行。 在SAS中执行此操作的最佳编程方法是什么?

我真的很感激任何建议!

1 个答案:

答案 0 :(得分:0)

PROC EXPAND可能是最直接的方法,虽然它有一个限制,它不会推断超出观察范围的开始/结束,并且它期望定期间隔(或更多的工作来定义间隔)。

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

这依赖于semester_date是一个日期变量,通常对应于每个半年的开始。

在这种情况下,您可以更轻松地使用printmiss中的proc tabulate选项,这样可以非常轻松地生成表格。

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

然后将其合并回主数据集,这将为每个学生*学期组合提供一行。