SAS分组累计求和,求平均值

sas proc means可以直接分组求统计量。下面演示的是用data步分组求和:

data x;
  input id age;
cards;
1  13
1  41
1  12
2  41
2  52
2  12
3  12
3  4
;
run;

首先对数据进行排序,因为后面的by语句要用到

proc sort data = x;
by id;
run;


data m3;
 set x;
 by id;
if first.id then tot = 0;
tot + age;
if first.id then time = 0;
time + 1;
mean = tot / time;
run;

结果如下:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SAS 中,我们可以使用 `SUM` 函数对数据集中的某些变量进行求和操作。如果我们需要对数据集中的某些变量进行分组求和,可以使用 `BY` 语句结合 `SUM` 函数来实现。 具体地说,`BY` 语句可以将数据集中的观测值按照某些变量进行分组,然后对每个分组内的变量进行求和操作。语法如下: ``` PROC SORT DATA = dataset; BY var1 var2 ... varn; RUN; DATA output_dataset; SET dataset; BY var1 var2 ... varn; IF FIRST.var1 THEN total = 0; total + variable_to_sum; IF LAST.var1 THEN OUTPUT; RUN; ``` 其中,`PROC SORT` 语句可以将数据集按照 `BY` 语句中指定的变量进行排序,以确保观测值按照分组变量的值顺序排列。`SET` 语句可以指定要操作的数据集,`BY` 语句可以指定要按照哪些变量进行分组,`IF` 语句可以判断当前观测值是否为每个分组的第一个或最后一个,`OUTPUT` 语句可以将结果输出到一个新的数据集中。 下面是一个具体的例子,假设有一个数据集 `example`,其中包含了两个变量 `group` 和 `value`,我们需要对 `value` 按照 `group` 进行分组求和操作。代码如下: ``` data example; input group value; datalines; A 1 A 2 B 3 B 4 B 5 ; run; PROC SORT DATA = example; BY group; RUN; DATA result; SET example; BY group; IF FIRST.group THEN total = 0; total + value; IF LAST.group THEN OUTPUT; RUN; proc print data=result; run; ``` 在上述代码中,我们首先定义了一个数据集 `example`,其中包含了两个变量 `group` 和 `value`。然后,我们使用 `PROC SORT` 语句将数据集按照 `group` 变量进行排序。接着,我们使用 `BY` 语句对数据集进行分组,然后使用 `IF` 语句判断当前观测值是否为每个分组的第一个或最后一个,最后使用 `OUTPUT` 语句将结果输出到一个新的数据集 `result` 中。最后,我们使用 `PROC PRINT` 过程输出了 `result` 数据集的内容。 上述代码的输出结果如下: ``` group total ------------- A 3 B 12 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值