楼主: mazheng23
10190 17

[问答] 急求教如何用SAS把以数据集随机分成2部分,一部分80%,另一部分20% [推广有奖]

  • 0关注
  • 0粉丝

大专生

18%

还不是VIP/贵宾

-

威望
0
论坛币
88 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
924 点
帖子
30
精华
0
在线时间
39 小时
注册时间
2010-10-19
最后登录
2011-8-15

10论坛币
RT~

联系方式:QQ:403990600

关键词:如何用 数据集 联系方式 SAS 求教 随机 数据集

回帖推荐

马甲1号 发表于3楼  查看完整内容

给你提供一个思路:你可以在数据集当中新增一个从0-1均匀分布抽样的变量,然后利用该变量=0.8来分割数据。

本帖被以下文库推荐

沙发
mazheng23 发表于 2011-4-4 16:45:10 |只看作者 |坛友微信交流群
着急使用,在线等~

使用道具

藤椅
马甲1号 发表于 2011-4-4 16:51:43 |只看作者 |坛友微信交流群
给你提供一个思路:你可以在数据集当中新增一个从0-1均匀分布抽样的变量,然后利用该变量<0.8以及该变量>=0.8来分割数据。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

归欤!归欤!吾党之小子狂简,斐然成章,不知所以裁之。

使用道具

板凳
leedx 发表于 2011-4-4 16:57:17 |只看作者 |坛友微信交流群
楼上的正解,用随机数的方法去拆分~

使用道具

报纸
mazheng23 发表于 2011-4-4 17:01:35 |只看作者 |坛友微信交流群
怎么增加0-1随机分布的变量,能加我q聊一下么,我这么着急使用,现学来不及,谢了~

使用道具

地板
baoaibaobao 发表于 2011-4-4 17:30:47 |只看作者 |坛友微信交流群
直接用proc surveyselect  就可以
    proc surveyselect  data=test1 out=results1  method=srs samprate=0.2;
    run;

具体说明可以参考下面资料
1、SAS 中可以利用PROC suveryselect 过程实现各种抽样
         其一般形式是:
PROC SURVEYSELECT  data=<源数据集名> method = <srslursl sys >  out=<抽取样本存放的数据集> n=<抽取数量>(or samprate=抽样比例) seed =n;
           strata <指定分层变量>;
           id <指定抽取的样本所保留的源数据集变量>;
run;

说明:method用来指定随机抽样方法的,其中SRS是指不放回简单随机抽样(Simple Random Samping);urs是指放回简单随机抽样(Unrestricted Random Sampling);sys是指系统抽样(Systematic Sampling)。seed用来指定随机种子数,为非负整数,取0则每次抽取的样本不同,若取大于0的整数,则下次抽样时若输入相同值即可得到相同的样本;id是指定从源数据集复制到样本数据集的变量,若缺省,则复制所有变量。
2、简单无重复随机抽样举例:
      /*按30%的比例从test数据集中抽取样本,并把样本输出到results数据集中*/
    proc surveyselect  data=test1 out=results1  method=srs samprate=0.3;
    run;

3、分层等比例随机抽样举例;
proc sort data=test2;
by 分层变量;
run; /**先用分层变量对总体样本进行排序/
proc surveyselect  data=test2 out=results2 method=srs samprate=0.1;
strata 分层变量;
run;  /*根据分层变量等比例从总体中抽取样本*/

4、分层不等比例抽样举例;
(1)手工设置抽样比例或者抽样数
proc sort data=test3;
by 分层变量;
run;                                                                   /**先用分层变量对总体样本进行排序/
proc surveyselect  data=test3 out=results3 method=srs
samprate=(0.1,0.3,0.5,0.2);                           /*根据分层情况设置每一层要抽取的比例*/
strata 分层变量;
run;                                                                /*根据分层变量不等比例从总体中抽取样本*/
   
proc surveyselect  data=test3 out=results3 method=srs
n=(30,20,50,40);                           /*根据分层情况设置每一层要抽取的样本数*/
strata 分层变量;
run;            
(2)根据抽样表进行不等比例抽样
proc sort data=test3;
by 分层变量;
run;                                                                   /**先用分层变量对总体样本进行排序/
proc surveyselect  data=test3 out=results3 method=SRS
samprate=samp_table;                           /*通过抽样比例数据集进行抽样,samp_table数据集中要包括分层变量 以及每一分层对应的抽样比例或者数量,如果按比例抽样变量必须用_rate_来命名抽样比例,如果是按数量抽样必须用_nsize_来命名抽样数量*/
strata 分层变量;
run;            

使用道具

7
edumetric 发表于 2011-4-4 17:32:23 |只看作者 |坛友微信交流群
试试下面的语句可以吗。
DATA yourdata;
SET yourdata;
grpind=ranuni(123);      /****  生成随机分布变量  ****/
run;

data yourdata1 yourdata2;
set yourdata;
if grpind>=.80 then output yourdata1;
if grpind<.80 then output yourdata2;
run;

使用道具

8
leedx 发表于 2011-4-4 17:43:38 |只看作者 |坛友微信交流群
6楼得方法不错,要好好学习一下下~

使用道具

9
mazheng23 发表于 2011-4-4 17:44:15 |只看作者 |坛友微信交流群
7# edumetric
谢谢,你的回答已经满足我的需要,怎么把论坛币给你哈

真的很谢谢了~

使用道具

10
edumetric 发表于 2011-4-4 17:47:53 |只看作者 |坛友微信交流群
唔使了。自己留着吧。
以后记得有什么心得,就上来和大家分享下。或者别人有问题,自己知道怎么解决的,给别人回复下就可以了。呵呵
mazheng23 发表于 2011-4-4 17:44
7# edumetric
谢谢,你的回答已经满足我的需要,怎么把论坛币给你哈

真的很谢谢了~

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 13:07