我有一个包含大约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的值(因为平均值将产生与我已经拥有的值相同的值)。对于ID4到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 … … … 提前谢谢你们!
发布于 2020-03-23 21:42:42
proc表示,这个过程主要用于计算描述性统计数据,如均值、中值、计数、和等。
在您的示例中,代码类似于:
Proc Means data = your_data_set MEAN;
Class ID;
Var var1 - var3;
Output out = your_output_data_set mean= /autoname;
Run;类类似于group。
var与分析变量相似。
输出是在某些数据集中保存信息的选项。
详细说明链接在这里输入链接描述
发布于 2020-03-23 14:41:29
看起来你只是想要这样的东西:
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
;https://stackoverflow.com/questions/60814786
复制相似问题