我有以下数据
p_id E_id
---- ----
1 1
1 2
1 3
1 4
2 1
3 1
3 2
3 3
4 1
对于每个primary_id
,我必须创建相应E_id
的表格。
我如何在SAS中完成;
我正在使用:
proc freq data = abc;
where p_id = 1;
tables p_id * E_id;
run;
如何概括所有主键的where语句?
答案 0 :(得分:1)
by
语句是如何为每个ID获取单独的表。它要求数据按变量排序。
proc freq data = abc;
by p_id;
tables p_id * E_id;
run;
答案 1 :(得分:0)
这是一个允许您选择p_id
来生成频率表的解决方案。
data have;
input p_id e_id;
datalines;
1 1
1 2
1 3
1 4
2 1
3 1
3 2
3 3
4 1
;
run;
proc sort data = have;
by p_id;
run;
%let pid_list = (1,2); ** only generate two tables;
data _null_;
set have;
by p_id;
if first.p_id and p_id in &pid_list then do;
call execute('
proc freq data = have(where = (p_id = '||p_id||'));
tables p_id * e_id;
run;
');
end;
run;