Sas 设置数据集内所有字符变量的长度
我有一个SAS数据集,我们称之为a。它既有数字变量也有字符变量。我希望将所有字符变量的长度设置为300。我该怎么做?我尝试了数组,但没有成功。提前感谢。一旦有了数据集,就不能更改变量定义。但是,您可以使用数据集的元数据生成代码,以创建具有不同设置的新数据集。如果您不关心变量的顺序,那么只需将名称拉入一个空格分隔的列表,并在LENGTH语句中使用它Sas 设置数据集内所有字符变量的长度,sas,Sas,我有一个SAS数据集,我们称之为a。它既有数字变量也有字符变量。我希望将所有字符变量的长度设置为300。我该怎么做?我尝试了数组,但没有成功。提前感谢。一旦有了数据集,就不能更改变量定义。但是,您可以使用数据集的元数据生成代码,以创建具有不同设置的新数据集。如果您不关心变量的顺序,那么只需将名称拉入一个空格分隔的列表,并在LENGTH语句中使用它 proc sql noprint; select name into :names separated by ' ' from diction
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;
一旦有了数据集,就不能更改变量定义。但是,您可以使用数据集的元数据生成代码,以创建具有不同设置的新数据集。如果您不关心变量的顺序,那么只需将名称拉入一个空格分隔的列表,并在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;