【发布时间】:2019-06-18 13:47:32
【问题描述】:
所以我有一个数据框,如下:
Obs ID A B C D
1 X1 1 . . .
2 X2 1 1 . .
3 X3 . 1 1 .
4 X4 . 1 . .
5 X5 . 1 . .
6 X6 1 . . .
7 X7 1 1 . .
8 X8 1 1 . .
9 X9 . . 1 .
10 X10 1 1 . .
这里的目标是对列求和,即
Total=sum(A,B,C,D)
但这里的问题是列的数量和名称不会固定。因此,我想创建一个数组,该数组将动态存储列的名称,删除 id 列,然后想取其余部分的总和。因此我写了一个命令如下:
proc sql noprint;
select
name into: cols
from dictionary.columns
where
memname = 'box';quit;
但我收到如下错误:
Statement is not valid or it is used out of proper order.
我确定这不是解决此问题的最佳方法,任何人都可以帮助我解决这个问题吗?提前非常感谢。
【问题讨论】:
-
如果要求和的列总是在列顺序内形成一个连续的块,你可以
sum(of a--d)。 -
这里列出了一些可以缩短该列表的方法:blogs.sas.com/content/iml/2018/05/29/…
-
嗨,User667489..列名不一定是动态的。
-
DICTIONARY.*表返回的LIBNAME和MEMNAME的元数据值始终为大写。
标签: arrays loops sas proc-sql datastep