使用proc转置时如何避免在列名中使用空格/制表符?

时间:2020-09-29 12:59:00

标签: sas transpose

在使用proc转置时如何避免在列名中使用空格/制表符?举例说明我的问题的最好方法是举一个例子:

Data tst; input ColA $ ColB; datalines;
    Cat1 1
    Cat2 2
    Cat3 3
; run;
proc transpose data = tst out= tst_out (drop = _name_); id ColA;
run;

运行此代码时,我的列名看起来像这样: enter image description here

基本上,我希望列名是"Cat1", "Cat1", "Cat1"而不是" Cat1", " Cat1", " Cat1"

(如果这不可能,那么我有一个替代问题:如何在proc转置之后删除空格?在我的真实数据集中,我有很多列,所以我更喜欢不必键入的方法每列)

1 个答案:

答案 0 :(得分:1)

只需将VALIDVARNAME选项的设置更改为V7,而不是ANY。它不会删除前导空格/制表符,但会将其更改为下划线,因此结果是有效名称。

示例:

data tst;
  input ColA $& ColB; 
datalines;
Cat 1  1
Cat 2  2
Cat 3  3
; 
options validvarname=v7;
proc transpose data=tst out=tst2; id cola ; var colb; run;
proc print;
run;

结果:

Obs    _NAME_    Cat_1    Cat_2    Cat_3

 1      ColB       1        2        3

PS在SAS程序中使用内联数据时,请确保在第一列中开始数据行。这样可以防止在数据行中意外包含空格(或使用SAS / Studio界面时使用制表符)。从第一列开始放置DATALINES(也称为CARDS)语句还将防止编辑器在开始添加数据行时自动缩进。