我是SAS的新手,需要解决一个非常基本的问题。
例如,我想执行以下操作,但是我无法在所有数据集中执行以下操作,因为例如,如果数据集中没有DX11列,则代码会中断,因为数据集中不存在DX11。
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.AConfiguration,\
org.springframework.boot.autoconfigure.admin.BConfiguration,\
org.springframework.boot.autoconfigure.admin.CConfiguration,\
org.springframework.boot.autoconfigure.admin.DConfiguration
答案 0 :(得分:1)
请使用可变的快捷方式列表,并重新构建代码。 DX:
将引用以DX开头的所有变量。
IF whichc('123', of dx:) or whichc('1234', of dx:)...
您需要使用IF而不是WHERE,因为WHERE不支持使用快捷方式。
从长远来看,以长格式而不是宽格式处理数据将更快,更容易,那么在诊断列表中的诊断位置也无关紧要。
答案 1 :(得分:1)
SAS会很高兴为您创建新变量。例如,如果您在数组中列出它们。 只需使用子集IF而不是WHERE。在将数据加载到数据步骤之前,需要在何处进行操作。 IF在数据步骤中对数据进行操作,因此可以引用源数据集中未包含的变量。
data dx_codes;
set lib.&sas_file_n;
array dx $5 dx1-dx11;
keep id dx1-dx11 ;
if dx1 in ('123', '1234', '12345', '123456')
or dx2 in ('123', '1234', '12345', '123456')
or dx3 in ('123', '1234', '12345', '123456')
or dx4 in ('123', '1234', '12345', '123456')
or dx5 in ('123', '1234', '12345', '123456')
or dx6 in ('123', '1234', '12345', '123456')
or dx7 in ('123', '1234', '12345', '123456')
or dx8 in ('123', '1234', '12345', '123456')
or dx9 in ('123', '1234', '12345', '123456')
or dx10 in ('123', '1234', '12345', '123456')
or dx11 in ('123', '1234', '12345', '123456')
;
run;