SAS:从零开始用proc report出人口统计学表

目的:如何生成如下图所示的人口统计学的表格
在这里插入图片描述

要点:
1、连续型变量(基线体重、基线身高等)需要展示例数、均值、中位值、最小值、最大值;离散型变量(性别、民族等)需要展示例数和百分比。这些统计量如何计算?
2、统计量需要保留几位小数?
3、如何令前3个剂量组、后5个剂量组分别属于共同的列名SC(肌肉注射)和IV(静脉滴注)?
4、如何在不同变量之间添加空行(如体重和性别之间用空行分割)?

步骤:
1、整合数据集,得到需要的变量:各受试者的组别、体重、性别;

/*1-rawdata*/
data dm1;
	merge dm rand wt(where=(visit='D-1'));
	by subjid;
	keep subjid sex weight grpn;
run;
/*2-generate total column*/
data dm2;
	set dm1;
	ouput;
	grpn=9;
	output;
run;
/*3-counts number of every group*/
proc sql noprint;
	select count(*) into:n1-:n9 
	group by grpn;
quit;
/*4-builds relation between grpn and &nx.*/
proc format;
	value total;
	1 = &n1.
	2 = &n2.
	3 = &n3.
	4 = &n4.
	5 = &n5.
	6 = &n6.
	7 = &n7.
	8 = &n8.
	9 = &n9.;
run;
data dm3;
	set dm2;
	var1='weight';/*the purpose for merging statistics with maxlen*/
	total=input(put(grpn,&total.),best.);
	if find(weight,'.') then len1=length(scan(weight,2,'.'));
	else len1=0;
/*5-generates different output format according to types of statistics:maxumum decimal places 4*/
proc sql noprint;
	create table maxlen1 as
	select "weight" as var1, max(len1) as maxl,
		   /*for medium, mean*/
		   case when (calculated maxl le 3) then
		   			 strip(put(8 + 0.1*(calculated maxl + 1),best.))
		        else strip(put(8 + 0.1*4,best.)) as maxl1,
		   /*for std*/
		   case when (calculated maxl le 2) then
		   			 strip(put(8 + 0.1*(calculated maxl + 2),best.))
		        else strip(put(8 + 0.1*4,best
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值