SAS Proc表格输出数据集变量名称

时间:2017-01-05 21:16:11

标签: sas

我使用proc tabulate为具有长名称(接近最多32个字符)的变量创建具有统计数据(n mean std min max p25 p75 median)的输出数据集。输出数据集会将_n,_std等添加到我们的变量名称中,但中间变量只是命名为“Median”,因为变量名称中添加了“_median”,结果变量名称将是> 32个字符。

有没有办法在proc表格步骤中指定输出数据集中的变量名称?我正在循环执行此过程的1000个变量,因此在数据步骤中重命名每个变量是不可行的。此外,它必须是proc表格而不是proc freq,因为我们需要为每个变量的每个可能值输出一行,而不仅仅是数据中存在的那些值。

proc tabulate data=DATA out=OUT ; 
var VERY_LONG_VARIABLE_NAME;
table VERY_LONG_VARIABLE_NAME *(n mean std min max p25 p75 median)/printmiss;
run;

1 个答案:

答案 0 :(得分:1)

不幸的是,我不知道如何覆盖表格名称。即使转换表格也无法解决这个问题 - 遗憾的是,你仍然会得到相同的结果。

我的建议是使用不同的过程。几乎所有你可能使用的过程都有办法得到你想要的东西 - 相当于PRINTMISS;例如,PROC FREQ具有基本相同的SPARSE选项(尽管名称奇怪),PROC SUMMARYPROC MEANS可能更好(使用COMPLETETPES)类声明),只取决于你的数据。

或者,您可以重塑数据,或重塑您的流程。例如,如果你真的循环了数千个变量,那就非常低效;更好的是重塑变量|值结构(垂直)然后做一个proc表格;这将解决您的问题(因为它会使'varname'成为CLASS或BY变量本身而不是输出变量名称的贡献者)并使您的过程更快。

您还可以在为您执行重命名的表格之前添加VIEW步骤;即使在宏循环中也会花费很少。

无论哪种方式,提供一些样本数据和您正在进行的整个过程的示例,您可能会得到更好的答案。