[英]SAS : Output from highest variable from dataset
我想从现有的最高n变量中分配一个新变量。 因此,如果我们的表的列数不断增加-
data have;
input uid $ var1 $ var2 $ var3 $;
datalines;
1111 1 0 1
2222 1 0 0
3333 0 0 0
4444 1 1 1
5555 0 0 0
6666 1 1 1
;
我想将变量var3导出为final_code。
data want;
set have;
final_code = max(of var1-var3);
run;
上面没有意义,因为我只想保留var3列。 同样,如果存在var4,我希望仅拥有var4。
有人想在这里帮助我吗?
如果我理解正确,那么您就不需要max
的值,而是最大编号变量中的值。
有很多方法可以做到这一点,这取决于变量的命名方式。 如果按照您所说的名称实际命名,这是最简单的。
data want;
set have;
array var[*] var:;
final_code = var[dim(var)];
run;
在这里,我们用var:
组成一个数组,然后使用dim
(表示数组的大小)选择数组中的最后一个元素。
我认为这是您正在寻找的是:
%let n=3
data want;
set have;
var&n = max(of var1-var&n);
drop var1-var%eval(&n-1);
run;
宏变量&n
保留&n
的值。 在代码的编译阶段,这可以替代。
DROP
语句告诉数据步骤删除那些变量。
%eval()
宏函数对宏值执行整数数学运算。 因此,我们将N-1丢弃1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.