全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3233 11
2010-02-11
我有一个智能判断取样的难题, 请高手指教:
数据是以组提交的, 但取样数是以部门为依据的.


我有一个大表, 包含了部门取样数:

Depart A     100

Depart B     200



还有一个部门与小组对照表

Group 1      Depart A
Group 2      Depart A
Group 3      Depart A

Group 4      Depart B
Group 5      Depart B

部门有100多个, 有的部门有1个组, 有的有好几个组.
每次每组提交的数据多少不一.


要求, 保留少的, 去掉多的, 比如这个月提交的数据如下,

group 1   120
Group 2   30
group 3    0


group 4    300
group 5    400


要求达到
group 1 取 70
group 2 取 30

group 4 取 200
group 5 取 200

有解决方案吗?
二维码

扫码加我 拉你入群

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

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

全部回复
2010-2-11 14:11:08
组的命名是怎样的 每个部门都是group 1开始呢 还是所有的组从group 1开始?
二维码

扫码加我 拉你入群

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

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

2010-2-11 14:26:35
如小组命名是整体的 即1,2,3.... 那可以试下下面的程序 无返回随机抽样
data temp;
        input group_nme:$20. group_amt:6.;
        cards;
        group1 70
        group2 30
        group3 0
        group4 200
        group5 300
;
run;

data _null_;
        set temp;
        call symput(group_nme, group_amt);
run;

%macro A;
%do i=1 %to 5;
data group_want_&i(drop=obsleft sampsize);
        sampsize=group&i;
        obsleft=totobs;
        do while(sampsize>0);
           pickit+1;
           if ranuni(0)<sampsize/obsleft then do;
              set group&i point=pickit
                  nobs=totobs;
              output;
              sampsize=sampsize-1;
           end;
        obsleft=obsleft-1;
        end;
        stop;
     run;
%end;
%mend;
%A
二维码

扫码加我 拉你入群

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

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

2010-2-11 15:13:03
不是很看得懂......
二维码

扫码加我 拉你入群

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

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

2010-2-11 17:54:57
3# 醉_清风

感谢醉_清风, 组名无规律. (不过,我可以再创建一列别名: g1, g2...), 不过, 这段程序有点难, 我要好好研究一下. 先谢谢了.
二维码

扫码加我 拉你入群

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

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

2010-2-12 06:25:23
运行出错

One or more library startup assignments were not restored.
1    data temp;
2            input group_nme:$20. group_amt:6.;
3            cards;

NOTE: The data set WORK.TEMP has 5 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.57 seconds
      cpu time            0.03 seconds


9    ;
10   run;
11
12   data _null_;
13           set temp;
14           call symput(group_nme, group_amt);
15   run;

NOTE: Numeric values have been converted to character values at the places given by:
      (Line):(Column).
      14:32
NOTE: There were 5 observations read from the data set WORK.TEMP.
NOTE: DATA statement used (Total process time):
      real time           0.14 seconds
      cpu time            0.00 seconds


16
17   %macro A;
18   %do i=1 %to 5;
19   data group_want_&i(drop=obsleft sampsize);
20           sampsize=group&i;
21           obsleft=totobs;
22           do while(sampsize>0);
23              pickit+1;
24              if ranuni(0)<sampsize/obsleft then do;
25                 set group&i point=pickit
26                     nobs=totobs;
27                 output;
28                 sampsize=sampsize-1;
29              end;
30           obsleft=obsleft-1;
31           end;
32           stop;
33        run;
34   %end;
35   %mend;
36   %A
ERROR: File WORK.GROUP1.DATA does not exist.

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.GROUP_WANT_1 may be incomplete.  When this step was stopped there
         were 0 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.06 seconds
      cpu time            0.00 seconds


ERROR: File WORK.GROUP2.DATA does not exist.

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.GROUP_WANT_2 may be incomplete.  When this step was stopped there
         were 0 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


ERROR: File WORK.GROUP3.DATA does not exist.

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.GROUP_WANT_3 may be incomplete.  When this step was stopped there
         were 0 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


ERROR: File WORK.GROUP4.DATA does not exist.

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.GROUP_WANT_4 may be incomplete.  When this step was stopped there
         were 0 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


ERROR: File WORK.GROUP5.DATA does not exist.

NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.GROUP_WANT_5 may be incomplete.  When this step was stopped there
         were 0 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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