满足SAS中某些条件的每个观察值中变量的比例

问题描述 投票:0回答:2

HAVE是SAS数据集,具有1700个观察值和约1,000个变量。除id之外,还有三种“类型”的变量。它们用不同的前缀表示。这是文件的子集:

id    a_dog b_dog c_dog a_cat b_cat c_cat a_mouse b_mouse c_mouse ...
prsn1     1    -1    -2     2     2     0       1       4       1   
prsn2    -1    -3     4     2     2    -1       0      -1      -1   
...

我需要根据变量的类型(即(a _b _c_],为每个受访者计算高于,低于或等于零的值的比例>)。解决方案应将这些新变量附加到文件中:

... prop_a_gt0 prop_a_lt0 prop_a_eq0 prop_b_gt0 prop_b_lt0 prop_b_eq0 prop_c_gt0 prop_c_lt0 prop_c_eq0
...     1.0000     0.0000     0.0000     0.6667     0.3333     0.0000     0.3333     0.3333     0.3333
...     0.3333     0.3333     0.3333     0.3333     0.6667     0.0000     0.3333     0.6667     0.0000

请注意,prsn1

prop_b_gt0是0.6667,因为prsn1行中的三个b _变量中有两个变量的值大于0。

我不确定如何系统地完成此操作。也许有一种方法可以将数组与proc sql步骤结合起来?欢迎任何解决方案!

HAVE是一个SAS数据集,包含1700个观测值和约1,000个变量。除id之外,还有三种“类型”的变量。它们用不同的前缀表示。这是文件的子集:id ...

arrays sas data-cleaning proc-sql
2个回答
1
投票

使用数组,您将需要遍历数组并计算更大的数字(并可能计算不丢失的数字)。


0
投票

对于三个以上的数组(按变量名后缀A,B,C分组),宏将有助于确保在复制和粘贴(代码复制)期间不会出现错别字或杂乱的编辑。

© www.soinside.com 2019 - 2024. All rights reserved.