申请认证 退出

您的申请提交成功

确定 取消

实用|数据分组汇总的几种SAS操作

2022-06-23 14:56   法迈新媒体

随着国内临床试验的发展,以及创新药研发力度的加大,越来越多的毕业生和职场人士加入到临床试验研发流程当中,成为整个产业链当中的重要一环,以创新的互网+模式服务于行业用户。

数据分析时经常会使用到分组汇总的情况,比如下图中需要计算不同年龄组城市urban和农村rural地区人口的男女合计并输出至新的sas数据集。

72961653650783946

1. 使用sas提供的数据汇总过程部

1.1 proc means

使用procmeans对变量urban和rural按照age分组求和,并将计算的结果输出到result1数据集里。

proc means data=popu  noprint;

var urban rural;

class age;

output out=result1 (keep=age urban_sum rural_sum)

      sum=urban_sum rural_sum;

run;

下图可见不同年龄段城市和农村地区的男女人口合计,其中age为空的这一行合计为所有年龄组的总合计。

78601653650784010

ods语句为sas数据集输出语句,此处也可以使用,如

ods output Summary=result2(keep=age urban_sumrural_sum);

proc means data=popu sum;

var urban rural;

class age;

run;

ods output close;

注意使用ods时程序中不能使用noprint选项。

55271653650784057

1.2 proc tabulate

tabulate过程部可以对数据进行多维度的汇总分析,默认是将结果输出到output窗口,可以使用ods语句将结果输出至数据集。

ods output Table=result3(keep=age urban_sum rural_sum);

proc tabulate data=popu;

var urban rural;

class age;

table age,urban rural;

run;

ods output close;

此外proc summary,proc univariate,proc report等数据汇总过程也可以实现。

41761653650784108

2. proc sql

结构化查询语言在多表操作中非常便利,也可以对数据分组汇总:

proc sql noprint;

create table result4 as

select distinct age,sum(urban) as urban_sum, sum(rural) asrural_sum 

from popu

group by age;

quit;

结果同上图。

3. DATA部

DATA部的语句具有强大的功能,可以完成很多数据操作,而且速度比较快,也可以进行数据分组汇总,首先要对分组变量进行排序:

proc sort data=popu;

by age;

run;

然后按照顺序对同一组内的数据进行累加,if first.age=1 thendo表示在遇到同一组第一条观测时urban_sum和rural_sum设置为0, iflast.age=1表示保留同一组内最后一条观测,相当于同一组数据累加的合计。

data result5;

  set popu;

  by age;

  keep age urban_sum rural_sum;

    if first.age=1 thendo;

        urban_sum=0;

rural_sum=0;

    end;

  urban_sum+urban;

  rural_sum+rural;

  if last.age=1;

run;

结果同上图。

方法很多,大家喜欢使用哪个呢?

不感兴趣

看过了

取消

output,urban,rural,proc,data,SAS,sum,age,数据集,ods,数据,分组,汇总,操作,语句

不感兴趣

看过了

取消

相关阅读

相关推荐

赞+1

您的申请提交成功

您的申请提交成功

确定 取消
海报

已收到您的咨询诉求 我们会尽快联系您

添加微信客服 快速领取解决方案 您还可以去留言您想解决的问题
去留言
立即提交