gpt4 book ai didi

sas - 如何使 SAS 宏运行通过变量/列?

转载 作者:行者123 更新时间:2023-12-03 17:57:08 27 4
gpt4 key购买 nike

我是第一次尝试 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 和低于值 x 的 obs 的数量。

我已经编写了代码,就像我为标准 SAS 代码中的一个变量编写的代码一样,它可以工作,现在我的目的是将该代码转换为宏代码,但我不知道如何构建一个循环从一列移动到下一列。

如果您能提供任何帮助或引用,我们将不胜感激。

谢谢。

最佳答案

%LET CUTOFF = 3.1415926 ; /* set this as your 'cutoff' value */

data counters ;
set mydata end=eof ;

array vi{*} v1-v10000 ; /* incoming values */
array vc{*} c1-c10000 ; /* counters */

retain vc . ;

do i = 1 to dim(vi) ;
if vi{i} >= &CUTOFF then vc{i} + 1 ;
end ;

if eof then output ;

keep c1-c10000 ;
run ;

关于sas - 如何使 SAS 宏运行通过变量/列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com