将 proc freq 输出转换为数据集
Converting proc freq output into a dataset
我有一个包含 564 个变量的 sas 数据集。我需要创建一个包含三列的新 table,column1 将是变量名称,column2 将是该变量的值,column3 将是观察编号。
因此,如果我有一个变量性别,那么性别将在变量列中列出 2 次,并且性别值将在第一行中列为 m,在第二行中列为女性,而 column3 将只是观察的编号.它应该是这样的。非常感谢。
var value obs
gender m 1
gender f 2
ans yes 3
ans no 4
从 PROC FREQ
中得到 table 的关键是 ods output
与 coalescec
.
相结合
ODS OUTPUT
可让您告诉 PROC FREQ
将所有内容放入一个数据集中(与 out=
相反,后者仅将一个 Freq table 放入一个数据集中)。这会给你一个稍微混乱的结果,然后我们使用 coalescec
来修复。该函数采用变量列表和 returns 来自它们的第一个非缺失值;由于 F_
变量总是只填充一个值(table 中变量的格式化值),因此很容易使用它们。
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;
你上面提到的其余内容在该数据集中是微不足道的。
我有一个包含 564 个变量的 sas 数据集。我需要创建一个包含三列的新 table,column1 将是变量名称,column2 将是该变量的值,column3 将是观察编号。 因此,如果我有一个变量性别,那么性别将在变量列中列出 2 次,并且性别值将在第一行中列为 m,在第二行中列为女性,而 column3 将只是观察的编号.它应该是这样的。非常感谢。
var value obs
gender m 1
gender f 2
ans yes 3
ans no 4
从 PROC FREQ
中得到 table 的关键是 ods output
与 coalescec
.
ODS OUTPUT
可让您告诉 PROC FREQ
将所有内容放入一个数据集中(与 out=
相反,后者仅将一个 Freq table 放入一个数据集中)。这会给你一个稍微混乱的结果,然后我们使用 coalescec
来修复。该函数采用变量列表和 returns 来自它们的第一个非缺失值;由于 F_
变量总是只填充一个值(table 中变量的格式化值),因此很容易使用它们。
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;
你上面提到的其余内容在该数据集中是微不足道的。