全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1617 5
2012-06-08
悬赏 1000 个论坛币 已解决
目的:绘制出按户主年龄分类的家庭户中曾生子女数和现居子女数
  数据:
part.xls
大小:(33 KB)

 马上下载

    指标解释:
指标解释.xls
大小:(40 KB)

 马上下载


程序:

libname (数据库所在路径)_;

options nofmterr;

ods listing exclude all;

odshtmlfile=输出表的路径及名称.xls;


/*计算个人年龄的过程*/

data basedata;

set (数据库名称) .sample                 /*取观测值并组合在一个数据集中*/

age=2010-R4_1;

if R4_2 ge11then age=age-1;                  /*计算年龄*/

run;

proc sort;                                  /*按照户编码排序*/

by H1;

run;


/*计算曾生子女数的过程*/

data one;                                   /*构造反映曾生子女数的cs、csm、csf的变量*/

set basedata(keep=R1 R2 R3 R26_1R26_2 H1);   /* R1为人代码;R2为与户主关系;R3为性别;R26_1为曾生男孩数;R26_2为曾生女孩数;H1为户代码*/  

if R2=0 and R3=2 then cs=R26_1+ R26_2       /*计算女性户主曾生男数*/

if R2=0 and R3=2 then csm=R26_1;              /*计算女性户主曾生男数*/

if R2=0 and R3=2 then csf=R26_2;               /*计算女性户主曾生女数*/

if R2=1 and R3=2 then cs=R26_1+ R26_2;        /*计算男性户主有配偶家庭曾生女数*/

if R2=1 and R3=2 then csm=R26_1;              /*计算男性户主有配偶家庭曾生男数*/

if R2=1 and R3=2 then csf=R26_2;               /*计算男性户主有配偶家庭曾生女数*/

proc sort;                                    /*按照户编码排序*/

by H1;

run;


/*计算现居子人数的过程*/

data one;

input xj xjm xjf @ @;

xj=0;

xjm=0;

xjf=0;

if R2=2 then xj=xj+1

if R2=2 and R3=1 then xjm=xjm+1

if R2=2 and R3=1 then xjf=xjf+1

by H1;

return

proc sort;                                    /*按照户编码排序*/

by H1;

Run;



data basedata csxj ;

merge basedata cs csm csf xj xjm xjf;

by H1;

group=substr(cx,1,2)+0;     /*构造城乡标志变量group(数值型)1为城镇,2为乡村*/

run;


procformat;

value $R24_fmt  ‘1’=’未婚’ ’2’=’有配偶’ ’3’=’离婚’  ’4’=’丧偶’ ’other’ = ‘缺失/不适用

value cs_fmt ‘0’=’未生育’ ‘1’=’曾生育1’ ’2’=’ 曾生育两人’ ’3’=’ 曾生育三人’  ’4’=’ 曾生育四人’  ’5’ = ‘曾生育五人’  ’6’ = ‘曾生育六人’  ’7’ = ‘曾生育七人’  ’other’ = ‘曾生育八人及以上

value csm_fmt ‘0’=’未生育男’ ‘1’=’曾生育1’ ’2’=’ 曾生育两男’ ’3’=’ 曾生育三男’  ’4’=’ 曾生育四男’  ’5’ = ‘曾生育五男’  ’6’ = ‘曾生育六男’  ’7’ = ‘曾生育七男’  ’other’ = ‘曾生育八男及以上

value csf_fmt ‘0’=’未生育女’ ‘1’=’曾生育1’ ’2’=’ 曾生育两女’ ’3’=’ 曾生育三女’  ’4’=’ 曾生育四女’  ’5’ = ‘曾生育五女’  ’6’ = ‘曾生育六女’  ’7’ = ‘曾生育七女’  ’other’ = ‘曾生育八女及以上

value xj_fmt ‘0’=’现居0’ ‘1’=’现居1’ ’2’=’ 现居两人’ ’3’=’ 现居三人’  ’4’=’ 现居四人’  ’5’ = ‘现居五人’  ’6’ = ‘现居六人’  ’7’ = ‘现居七人’  ’other’ = ‘现居八人及以上

value xjm_fmt ‘0’=’ 现居0’ ‘1’=’现居1’ ’2’=’ 现居两男’ ’3’=’ 现居三男’  ’4’=’ 现居四男’  ’5’ = ‘现居五男’  ’6’ = ‘现居六男’  ’7’ = ‘现居七男’  ’other’ = ‘现居八男及以上

value xjf_fmt ‘0’=’ 现居0’ ‘1’=’现居1’ ’2’=’ 现居两女’ ’3’=’ 现居三女’  ’4’=’ 现居四女’  ’5’ = ‘现居五女’  ’6’ = ‘现居六女’  ’7’ = ‘现居七女’  ’other’ = ‘现居八女及以上

run;



/*制作按户主年龄分类的家庭户曾生子女与现居子女状况列联表的宏程序*/

%macro tabulate(title,cx,gender);

title “&title. 按户主年龄分类的家庭户曾生子女与现居子女状况”;

data basedata_csxj1;

set basedata_ csxj;

if R2=0;

if group^=&cx;

if R3=&gender;

run;


proc tabulate;

class age cs csm csf xj xjm xjf R24;

table all age,(all R24 (all cs xj)  (all csm xjm)  (all csf xjf) ;

format R24 $ R24_fmt.  cs cs_fmt. csm csm_fmt.  csf csf_fmt. xj xj_fmt.  xjm xjm_fmt. xjf xjf_fmt.;

keylabel all=’总计

label R24=”婚姻状况”  age=”年龄

run;


%mend tabulate;

% tabulate(全国男性,0,1)

% tabulate(全国女性,0,2)

% tabulate(城镇男性,2,1)

% tabulate(城镇女性,2,2)

% tabulate(乡村男性,1,1)

% tabulate(乡村女性,1,2)

odshtml close;

ods listing exclude none;




最佳答案

tj0412ymy 查看完整内容

这段程序修改起来真费事!LZ测试一下修改后的程序,应该问题不大。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-6-8 21:30:42
这段程序修改起来真费事!LZ测试一下修改后的程序,应该问题不大。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-9 21:48:23
tj0412ymy 发表于 2012-6-8 23:29
这段程序修改起来真费事!LZ测试一下修改后的程序,应该问题不大。
朋友请看一下第一部分程序的运行结果,出了什么问题?
TT截图未命名.bmp
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-9 23:49:44
耕耘使者 发表于 2012-6-9 21:48
朋友请看一下第一部分程序的运行结果,出了什么问题?
Pls try this method. http://support.sas.com/kb/10/199.html
1. Make the Enhanced Editor the active window.
2. Click on Tools->Options->Enhanced Editor.
3. Check the box beside 'Replace tabs with spaces on file open'.
4. Click OK to close the dialog box.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-10 19:36:40
正在测试、学习中,稍候。
非常感谢朋友!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-11 06:42:06
tj0412ymy 发表于 2012-6-8 21:30
这段程序修改起来真费事!LZ测试一下修改后的程序,应该问题不大。
非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群