我有一个带有564个变量的sas数据集。我需要创建一个包含三列的新表,column1将是变量名,column2将是该变量的值,而column3将是观察数。 因此,如果我有一个变量性别,那么性别将在变量列中列出2次,性别值将在第一行中列为m,在第二行中列为女性,而column3将只是观察的数量。这应该是它的样子。非常感谢提前。
var value obs
gender m 1
gender f 2
ans yes 3
ans no 4
答案 0 :(得分:2)
从PROC FREQ
中获取包含所有值的表格的关键是ods output
与coalescec
相结合。
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;
上面提到的其他内容对于该数据集来说是微不足道的。