如何根据SAS中的指标变量(分别)取所有变量的平均值

How to take average of all variables (seperately) based on indicator variable in SAS

我有一个包含 100 个变量的数据集,我想根据指示哪些值取平均值的指示变量分别取所有变量的平均值。所以我有以下内容:

Id   Var1    Var2     Var3  Take_Avg
1    …        …        …        1
2    …        …        …        2
3    …        …        …        3
4    …        …        …        9999
5    …        …        …        9999
6    …        …        …        9999
7    …        …        …        7
8    …        …        …        8
9    …        …        …        99999
10   …        …        …        99999
11   …        …        …        99999
12   …        …        …        99999
13   …        …        …        99999
14   …        …        …        14
15   …        …        …        15

所以对于 id1,我只需要 Var1、2 和 3 的值(因为平均值将产生与我已有的相同值)。对于 id 4 到 6,我分别需要 Var1、2 和 3 的平均值。

我尝试创建它并在 Group By 语句中取所有变量的平均值,但我不知道如何做。有办法吗?

我想要的结果如下所示:

Id   avg(Var1)      avg(Var2)     avg(Var3) 
1      …             …              …       
2      …             …              …      
3      …             …              …       
4      avg(id 4-6)   avg(id 4-6)    avg(id 4-6)
7      …             …              …      
8      …             …              …       
9      avg(id 9-13)  avg(id 9-13)   avg(id 9-13)
14     …             …              …       
15     …             …              …       

提前谢谢大家!

看起来你只是在问这样的事情:

select take_avg
     , min(id) as new_id 
     , mean(var1) as mean_var1
     , mean(var2) as mean_var2
     , mean(var3) as mean_var3
from have
group by take_avg
;

使用SAS可以使用程序proc means,这个程序主要用于计算描述性统计,如均值、中位数、计数、求和等

在您的情况下,代码类似于:

Proc Means data = your_data_set MEAN;
 Class ID;
 Var var1 - var3;
 Output out = your_output_data_set mean= /autoname;
Run;

class类似于group by.


var类似于分析变量


output out是保存到某些数据集中信息的选项。

link 详解 enter link description here