Variables SAS:数据集中最高变量的输出
我想从现有的最大n变量中分配一个新变量。 所以如果我们有一个列数不断增加的表-Variables SAS:数据集中最高变量的输出,variables,sas,max,Variables,Sas,Max,我想从现有的最大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作为最终的_代码 da
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作为最终的_代码
data want;
set have;
final_code = max(of var1-var3);
run;
上面的内容在这里没有意义,因为我只想保留var3列。同样,如果有var4,我只希望有var4
有人想帮我吗?我想这就是你要找的:
%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()
宏函数对宏值执行整数运算。所以我们从1下降到N-1 我想这就是你想要的:
%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()
宏函数对宏值执行整数运算。所以我们从1下降到N-1 如果我理解正确,您不需要max
的值,而是来自编号最高的变量的值
有很多方法可以做到这一点,哪种方法取决于变量的命名方式。这是最简单的,如果他们真的按照你说的命名的话
data want;
set have;
array var[*] var:;
final_code = var[dim(var)];
run;
在这里,我们用
var:
创建一个数组,然后使用dim
选择数组中的最后一个元素(即数组的大小)。如果我理解正确,您不需要max
值,而是从编号最高的变量中选择值
有很多方法可以做到这一点,哪种方法取决于变量的命名方式。这是最简单的,如果他们真的按照你说的命名的话
data want;
set have;
array var[*] var:;
final_code = var[dim(var)];
run;
在这里,我们用
var:
创建一个数组,然后使用dim
选择数组中的最后一个元素(即数组的大小)。如果n=12,我仍然希望从#var3中获得值,会怎么样@多帕兹,谢谢你的帮助。我不确定我是否完全理解你的要求。你能更详细地解释一下吗?根据上面的评论,@joe answer就是你要找的。如果n=12,我仍然需要#var3的值怎么办@多帕兹,谢谢你的帮助。我不确定我是否完全理解你的要求。你能更详细地解释一下吗?根据上面的评论@joe answer就是你要找的。你只需要var3
中的值?是的。如果有一个var4,我想要var4等等。你的数据集不能有变化的变量数量,所以我怀疑这些解决方案对你的完整数据集不起作用。您能否准确地显示所需的内容和更复杂的相同数据。如果接收到的文件使数据集一次又一次地被替换为越来越多的列,那么?您只需要var3
中的值?是。如果有一个var4,我想要var4等等。你的数据集不能有变化的变量数量,所以我怀疑这些解决方案对你的完整数据集不起作用。您能否准确地显示所需的内容和更复杂的相同数据。如果接收到的文件使数据集一次又一次地被替换为越来越多的列,那么?