将proc freq输出转换为数据集

时间:2016-03-22 15:10:07

标签: sas dataset

我有一个带有564个变量的sas数据集。我需要创建一个包含三列的新表,column1将是变量名,column2将是该变量的值,而column3将是观察数。 因此,如果我有一个变量性别,那么性别将在变量列中列出2次,性别值将在第一行中列为m,在第二行中列为女性,而column3将只是观察的数量。这应该是它的样子。非常感谢提前。

var    value obs
gender m      1
gender f      2
ans    yes    3
ans    no     4

1 个答案:

答案 0 :(得分:2)

PROC FREQ中获取包含所有值的表格的关键是ods outputcoalescec相结合。

ODS OUTPUT可让您告诉PROC FREQ将所有内容放入一个数据集中(而不是out=只将一个Freq表放入一个数据集中)。这会给你一个稍微混乱的结果,然后我们使用coalescec来修复。该函数获取变量列表并从中返回第一个非缺失值;由于F_变量总是只填充一个值(表中变量的格式化值),因此很容易使用它们。

ods output onewayfreqs=freqs;
proc freq data=sashelp.class;
  tables age sex;
run;
ods output close;  *technically unneeded but makes it more clear;

data want;
  set freqs;
  value = left(coalescec(of f_:));
run;

上面提到的其他内容对于该数据集来说是微不足道的。