使用Proc Transpose时,如何防止变量名称的前导下划线

问题描述 投票:0回答:3

我正在尝试转换看起来像这样的数据集:

  A        B        C
2011      NH        25
2011      MA        40 
2015      CA        50
2016      KY        58

我希望输出为:

 B     2011     2015      2016
NH      25        -         -
MA      40        -         -
CA       -        50        -
KY       -        -         58

目前我的代码是:

 proc transpose data = Test out = Test2(drop = _label_);
     id Year_Enter;
     Var Numeric;
     by Category NOTSORTED;
 run;

但是,当我运行时,我的所有列名都在前面有一个下划线,如_2011,_2015,_2016。

如何防止添加下划线?

谢谢!

sas transpose proc
3个回答
1
投票

如果需要数据集,则可以使用有效的变量名称。变量名通常不能以数字开头。您可以使用PROC TRANSPOSE语句中的PREFIX =选项来选择数字变量值前缀的字符,以生成有效名称。因此,您可以使用PREFIX=Y生成变量名称,如Y2011或使用PREFIX=Year_生成Year_2011等名称。您可以使用IDLABEL语句将裸数字字符串作为变量的LABEL。

proc transpose data=have prefix=Year_ out=want(drop=_name_);
  by State;
  id Year;
  idlabel Year;
  var Value;
  format year 4.;
run;

proc print;
run;

enter image description here

proc print label;
run;

enter image description here

但它看起来真的想要生成一个REPORT而不是DATASET。例如,您可以使用原始数据集中的PROC REPORT创建该报告,而无需PROC TRANSPOSE。

proc report missing data=have ;
  column state value,year ;
  define state / group ;
  define year / across ' ';
  define value / sum ' ';
run;

enter image description here


0
投票

您需要启用扩展变量名称。 SAS变量必须遵循某些naming conventions,其中一些可以被覆盖:

  • 名称最长可达32个字节。
  • 名称可以包含拉丁字母,数字或下划线的字母。
  • 除下划线外,名称不能包含空格或特殊字符。
  • 名称必须以拉丁字母(A-Z,a-z)或下划线的字母开头。

如果启用选项options validvarname=any;,则将删除数字变量名称前面的下划线并使用扩展SAS命名规则。请参阅下面的示例。

data have;
    input A B$ C;
    datalines;
2011 NH 25
2011 MA 40
2015 CA 50
2016 KY 58
;
run;

options validvarname=any;
proc transpose data = have out = want(drop = _label_);
     id A;
     Var C;
     by B NOTSORTED;
run;

0
投票

转换成使得数据值(年)成为元数据(作为列名称的年份)的形式通常指示报告转换。考虑使用Proc TABULATE来渲染转换。

data have; input
A        B $       C; datalines;
2011      NH        25
2011      MA        40 
2015      CA        50
2016      KY        58
run;

proc tabulate data=have;
  class a;
  class b / order=data;
  var c;
  table b='',a=''*c=''*sum='';
run;

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.