【问题标题】:Converting proc freq output into a dataset将 proc freq 输出转换为数据集
【发布时间】:2016-03-23 00:09:04
【问题描述】:

我有一个包含 564 个变量的 sas 数据集。我需要创建一个包含三列的新表,column1 将是变量名称,column2 将是该变量的值,column3 将是观察编号。 因此,如果我有一个变量gender,那么gender 将在变量列中列出2 次,并且gender 值将在第一行列为m,在第二行列为female,并且column3 将只是观察的数量.这就是它应该的样子。非常感谢。

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

【问题讨论】:

  • 将来,最好通过提供示例数据和用于在其上运行频率的代码来提出此类问题。

标签: sas dataset


【解决方案1】:

PROC FREQ 中获取一个表,其中所有值在一列中的关键是ods output 结合coalescec

ODS OUTPUT 让您告诉PROC FREQ 将所有内容放入一个数据集中(而不是out= 将一个频率表放入一个数据集中)。这会给你一个稍微混乱的结果,然后我们使用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;

您在上面提到的其余内容在该数据集中是微不足道的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    相关资源
    最近更新 更多