全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1485 2
2010-09-16
2、现在我要从一个数据表中提取满足一下条件的信息:年龄大于30,存款大于1000;抽取样本男:女比例为4:6的比例,从广东抽2000,从浙江抽1000、江苏抽3000,
     我的主要疑问是既要从不同省、又要满足男女性别比要求,该怎么办??


以下是我的代码
libname temp "d:\My Documents\ssfz";
data age_ge_30; /*找出age>=30*/
set ad_khzh(keep=cust_id last_name sex ckye birth_dt);/*ckye为资产余额*/
where ckye>=1000 and  intck('year',datepart(birth_dt),today())>=35;
run;
proc sort;by cust_id;run;
data merge_cust;
merge age_ge_30(in=a) branch(keep=cust_id bank);/*有不同的分行*/
by cust_id;
if a;
run;
*******现在的问题是比如北京抽1000人,性别比为男女为4:6,同样的上海抽1500人,性别比一样**********************;
************************还有其他行,有没有什么好的方法可以解决这个问题?***************;
proc sql;
create table bank_type as
select *
from merge_cust
group by bank
;
run;
********到这一步我就没有很好的思路了,有没有哪位高手恳请赐教*************;
二维码

扫码加我 拉你入群

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

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

全部回复
2010-9-17 02:46:02
you can try:

calculate the sample size to meet deposit/age by gender per branch;
calculate the p_male=300/S_male
draw 300 men using p_male + 700 men using 1 - p_male.
repeat for other branch.
二维码

扫码加我 拉你入群

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

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

2010-9-19 14:38:31
data test;
        input sex $ @@;
cards;
f f f m m m f f f m m m f m f m f f f m m m m m m f f f f
;
run;

%let NN = 10;

data test_m
                test_f;
        retain Nmale 0
                 Nfemale 0
                         male_cnt 0
                         female_cnt 0;
        set test;
        if _n_ = 1 then do;
                Nmale = &NN. * 4 / 10 + 0.5;
                Nfemale = &NN. * 6 / 10 + 0.5;
                male_cnt = 0;
                female_cnt = 0;
        end;
        if upcase(sex) = 'F'  then do;
                female_cnt + 1;
                if female_cnt <= Nfemale then output test_f;
        end;
        else if upcase(sex) = 'M' then do;
                male_cnt + 1;
                if male_cnt <= Nmale then output test_m;
        end;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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