设置数据库中所有字符变量的长度

时间:2016-02-17 14:54:39

标签: sas

我有一个SAS数据集,我们称之为A.它有数字和字符变量。我希望将所有字符变量的长度设置为300.我该怎么办?我尝试了数组,它没有用。提前谢谢。

1 个答案:

答案 0 :(得分:2)

拥有数据集后,您无法更改变量定义。但是,您可以使用有关数据集的元数据来生成可以创建具有不同设置的新数据集的代码。如果您不关心变量顺序,那么只需将名称拉入空格分隔列表并在LENGTH语句中使用它。

proc sql noprint;
  select name into :names separated by ' '
  from dictionary.columns where libname='WORK' and memname='A' and type='char'
  ;
quit;
data want;
  length &names $300;
  set A;
run;

如果您关心订单,那么也包括数字变量。您可以通过拉动VARNUM并通过将其填充到将被名称和长度列表覆盖的相同宏变量中忽略它来消除有关未包含在select语句中的变量进行排序的警告。

proc sql noprint;
  select varnum
       , catx(' ',name,case when (type='char') then '$300' else '8' end)
    into :names
       , :names separated by ' '
    from dictionary.columns where libname='WORK' and memname='A'
    order by varnum
  ;
quit;
data want;
  length &names ;
  set A;
run;