我有5个变量:
学术年,
部门,
指令GID
库伦r
学分_小时
我需要按学年、部门和 InstrGID 分组的学分平均值。当“curenr”等于 0 时,平均值必须排除零。但是,零值应保留在新创建的数据集中。下面的脚本运行不包括零的平均值,但创建的数据集现在删除了 0 值。
如何在不删除数据集中的 0 值的情况下创建均值变量?
数据集示例:
学年 | 部门 | 输入GID | 当前 | 学分_小时 | 平均_学分_小时 |
---|---|---|---|---|---|
2022 | CS | G11111111 | 10 | 20 | 25 |
2022 | CS | G11111111 | 10 | 30 | 25 |
2023 | GDA | G11111111 | 20 | 10 | 50 |
2023 | GDA | G11111111 | 20 | 90 | 50 |
2023 | GDA | G22222222 | 0 | 0 | - |
2023 | GDA | G22222222 | 20 | 30 | 35 |
2023 | GDA | G22222222 | 20 | 40 | 35 |
我当前的脚本:
创建表 avg_cred_hrs 为
选择*,
mean(Credit_Hours) 作为mean_credit_hours
上班。QUERY_FOR_XLSTCOUNT
其中 CURENR >0
按学术年、部门、INSTRGID 分组;
奔跑
使用
CASE
语句,当 CURENR
为 0 时返回缺失,否则返回 Credit_Hours
。 mean()
将排除所有缺失值。
proc sql;
create table avg_cred_hrs as
select *,
mean(CASE(curenr)
when(0) then .
else Credit_Hours
END
) as mean_credit_hours
from work.QUERY_FOR_XLSTCOUNT
group by AcademicYear, dept, INSTRGID
;
quit;
Academicyear Dept INSTRGID curenr Credit_hours mean_credit_hours
2022 CS G1111111 10 30 25
2022 CS G1111111 10 20 25
2023 GDA G1111111 20 10 50
2023 GDA G1111111 20 90 50
2023 GDA G2222222 20 40 35
2023 GDA G2222222 20 30 35
2023 GDA G2222222 0 0 35