如何使 SAS 宏运行变量/列?
我第一次尝试 SAS 宏。我的基本问题是:我有一个包含 10000 个变量的数据集。我需要单独获取每一列,创建一个新的条件变量,存储结果,然后移至下一列。这些列不是按顺序排列的。 SAS 使用什么语法来标识列(类似于“_N_”标识行的方式)?
这是更多信息。 数据看起来像这样:
ID v1 v2 v3 ... v10000
01 3.2 1.5 7.8 ... 4.2
02 1.1 4.5 1.9 ... 10.7
..
N 2.5 1.5 4.9 ... 7.3
我需要查看 v1 的值,计算有多少个 obs 高于值 x 以及有多少个低于值 x,将这些数字记录在数据集中,然后移至 v2、v3、...。 ..v10000。最后,我将得到一个数据集,该数据集将显示 10000 个变量中每个变量的高于值 x 的 obs 数量和低于值 x 的 obs 数量。
我已经编写了代码,就像我为标准 SAS 代码中的一个变量编写的那样,它可以工作,现在我的目的是将该代码转换为宏代码,但我不知道如何构造一个从一个变量移动的循环列到下一个。
您能提供的任何帮助或参考将不胜感激。
谢谢。
I am trying my hand at SAS macros for the first time. My basic question is: I have a dataset with some 10000 variables. I need to take each column individually, create a new conditional variable, store the results, then move to the next column. These columns are not sequentially ordered. What is the syntax SAS uses to identify a column (similar to how "_N_" would identify a row)?
Here is more information.
The data looks something like this:
ID v1 v2 v3 ... v10000
01 3.2 1.5 7.8 ... 4.2
02 1.1 4.5 1.9 ... 10.7
..
N 2.5 1.5 4.9 ... 7.3
I need to look at the values of v1, count how many obs are above a value x and how many are below a value x, record those numbers in a dataset, then move onto v2, v3, ... v10000. In the end, I'd have a dataset that would show the number of obs above value x and number of obs below value x for each of my 10000 variables.
I have written the code as I would have written it for one variable in standard SAS code and it works, and now my intention is to convert that code into macro code, but I do not know how to construct a loop that would move from one column to the next.
Any help or references you could give would be greatly appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这不是最有效的方法,但这将为您提供 10000 个单独的数据集。
从那里,您可以在每个数据集 v_1、v_2、.... 上使用相同类型的宏 do 循环。
Not going to be the most efficient way but this will get you 10000 individual data sets.
From there you could employ the same sort of macro do loop on each data set v_1, v_2,....