我有两个数据集,其中一个包含数字变量,另一个包含一些应分割这些数字变量的条件。比方说,第一个数据集看起来像这样:
var1 var2
1 12
8 4
另一个:
varname condition group
var1 var1 < 5 1
var1 var1 >= 5 2
var2 var2 < 6 1
var2 var2 >= 6 2
然后输出数据集看起来像:
var1 var2 var1_cat var2_cat
1 12 1 2
8 4 2 1
如果我必须处理任何“标准”编程语言,我只会使用嵌套迭代。然而,SAS及其数据步骤逻辑对我来说是非常陌生的。
任何帮助都会受到重视。
答案 0 :(得分:1)
不确定如何以“常规语言”执行此操作,但在SAS中,这是一个简单的代码生成问题。使用解释语言的好处之一。
例如,您可以将“规则”数据集转换为一系列SQL案例陈述。
filename code temp;
data _null_;
set rules end=eof;
by varname ;
file code ;
if _n_=1 then put 'create table want as select *' ;
newvar=cats(varname,'_cat');
if first.varname then put ',case' ;
put ' when (' condition ') then ' group ;
if last.varname then put ' else . end as ' newvar ;
if eof then put 'from have;' ;
run;
现在您已将文件中的代码包含在内。
proc sql;
%include code / source2 ;
quit;