这是一个非常基本的问题,但我找不到一个简单的方法。 我有一个数据集,引用不同的高中和学生:
Highschool Students Sexe
A 1 m
A 2 m
A 3 m
A 4 f
A 5 f
B 1 m
B 2 m
我想创建两个新变量来计算每所学校的男女人数:
Highschool Students Sexe Nb_m Nb_f
A 1 m 1 0
A 2 m 2 0
A 3 m 3 0
A 4 f 3 1
A 5 f 3 2
B 1 m 1 0
B 2 m 2 0
我终于可以提取最后一行,总计看起来像这样:
Highschool Students Sexe Nb_m Nb_f
A 5 f 3 2
B 2 m 2 0
有什么想法吗?
答案 0 :(得分:1)
您可以在一个PROC SQL
步骤中执行此操作...
另外,我认为你真的不需要最后一行的Sexe
值。
proc sql ; create table want as select Highschool, sum(case when Sexe = 'f' then 1 else 0 end) as Nb_f, sum(case when Sexe = 'm' then 1 else 0 end) as Nb_m, Nb_f + Nb_m as Students group by Highschool order by Highschool ; quit ;
答案 1 :(得分:0)
首先,您必须按 Highschool 对数据集进行排序:
proc sort data = your_dataset;
by Highschool;
run;
然后你用
data new_dataset;
set your_dataset;
by Highschool;
retain Nb_m Nb_f;
if Sexe = 'm' then
Nb_m + 1;
else
Nb_f + 1;
if last.Highschool then do;
Students = Nb_m + Nb_f;
output;
Nb_m = 0;
Nb_f = 0;
end;
run;