根据其他数据集中的条件对变量进行分类

时间:2016-04-16 14:18:59

标签: sas

我有两个数据集,其中一个包含数字变量,另一个包含一些应分割这些数字变量的条件。比方说,第一个数据集看起来像这样:

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及其数据步骤逻辑对我来说是非常陌生的。

任何帮助都会受到重视。

1 个答案:

答案 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;

enter image description here