问题描述
我在数千行(典型)的数据集上运行 SAS 代码。我需要在一个数据步骤中创建 2 个新变量,其中包括每行的总和(基于变量名称的每个 y 观察的标题中的 X 或 Z 类别。显然我不能写出每个变量我需要总和因为在我的实际数据集中这是不可能的。我认为答案是各种循环,但没有运气在线找到我不需要列出所有变量的解决方案。
下面列出了一个小得多的示例数据集,其中包含我需要的数据在最后的样子。
到目前为止,我尝试做这样的事情,但我知道这太远了,我真的很困惑如何让它识别变量名称并在它遇到最后一个 X 或最后一个 Z 时停止。
DATA sample1 (drop = i);
set data;
do i = i to 10;
answer = sum(i);
end;
run
解决方法
您可以使用带有 :
的变量快捷方式引用。
of X:
表示对以变量 X 开头的所有内容求和。
data want;
set have;
sumx = sum(of X:);
sumZ = sum(of Z:);
*if you know the end of the series;
sumx = sum(of X1-X4);
sumZ = sum(of Z1-Z5);
run;
指定变量列表的不同方式是illustrated here