楼主: zespri
3299 11

[原创博文] 请问关于智能取样的问题? [推广有奖]

  • 0关注
  • 1粉丝

VIP

已卖:1278份资源

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
3869 个
通用积分
272.6608
学术水平
7 点
热心指数
9 点
信用等级
8 点
经验
35949 点
帖子
374
精华
0
在线时间
616 小时
注册时间
2006-5-16
最后登录
2025-5-7

楼主
zespri 发表于 2010-2-11 14:06:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我有一个智能判断取样的难题, 请高手指教:
数据是以组提交的, 但取样数是以部门为依据的.


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

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

有解决方案吗?
二维码

扫码加我 拉你入群

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

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

关键词:Group PART 解决方案 ART EPA 智能

回帖推荐

bobguy 发表于8楼  查看完整内容

7# bobguy Here is a sample program. ****random generate samoe data; data pop; n0=1; do g='1','2','3','4','5'; n=n0+ceil(ranuni(12345)*20); do id=n0 to n; other_var= ranuni(12345); output; end; n0=n+1; end; keep id g other_var; run; proc print; run; proc surveyselect data=pop method=srs n=(3 5 7 ...

本帖被以下文库推荐

沙发
醉_清风 发表于 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
从来不需要想起 永远也不会忘记

板凳
soporaeternus 发表于 2010-2-11 15:13:03
不是很看得懂......

报纸
zespri 发表于 2010-2-11 17:54:57
3# 醉_清风

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

地板
zespri 发表于 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

7
bobguy 发表于 2010-2-12 07:00:49
zespri 发表于 2010-2-11 14:06
我有一个智能判断取样的难题, 请高手指教:
数据是以组提交的, 但取样数是以部门为依据的.


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

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

有解决方案吗?
All is in SAS proc surveyselect.

8
bobguy 发表于 2010-2-12 08:33:31
7# bobguy

Here is a sample program.

****random generate samoe data;
data pop;
   n0=1;
   do g='1','2','3','4','5';
       n=n0+ceil(ranuni(12345)*20);
       do id=n0 to n;
           other_var= ranuni(12345);
           output;
        end;
        n0=n+1;
    end;
    keep id g  other_var;
run;

proc print; run;

proc surveyselect data=pop
         method=srs n=(3 5 7 2 2)  /*** sanmple size for each group/strata ***/
         seed=33091 out=Sample;
      strata g;
   run;

proc print; run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

9
zespri 发表于 2010-2-12 08:57:16
8# bobguy


感谢bobguy, 但surveyselect有一个问题, 就是如果要求取样数大于实际数, 就会报错.

10
bobguy 发表于 2010-2-13 06:50:53
zespri 发表于 2010-2-12 08:57
8# bobguy


感谢bobguy, 但surveyselect有一个问题, 就是如果要求取样数大于实际数, 就会报错.
It should issue a error message when one ask more data points than the in the real data.

However, it can be easily bypassed by adding one more steps.

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 08:35