全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3690 8
2016-11-14
我用了简单随机抽样的方法srs对数据进行抽样,可是不懂怎么把每次抽出的样本赋值成X1、X2,我看了把字符型赋值成数值型,还是没有解决我的问题,以下是我根据题目自己编的程序
DATA My_SAMPLES;
DO I=1 TO 1000;
X=RANNOR(0);
OUTPUT;
END;
PROC surveyselect DATA =My_SAMPLES
      method=srs n=2
      REP=1000
      out=SampleSRS;
DATA SampleSRS;
ARRAY X(2)X1-X2;
DO J=1 TO 2;
Y=X1=X2;
Z=X1-X2;
OUTPUT;
END;
PROC MEANS DATA=SampleSRS VAR;
VAR Y Z;
RUN;


日志窗口显示在ARRAY的步骤中存在缺失值(红字标示部分)
460  DATA My_SAMPLES;
461  DO I=1 TO 1000;
462  X=RANNOR(0);
463  OUTPUT;
464  END;

NOTE: 数据集 WORK.MY_SAMPLES 有 1000 个观测和 2 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.01 秒


465  PROC surveyselect DATA =My_SAMPLES
466        method=srs n=2
467        REP=1000
468        out=SampleSRS;

NOTE: 数据集 WORK.SAMPLESRS 有 2000 个观测和 3 个变量。
NOTE: “PROCEDURE SURVEYSELECT”所用时间(总处理时间):
      实际时间         0.03 秒
      CPU 时间         0.03 秒


469  DATA SampleSRS;
470  ARRAY X(2)X1-X2;
471  DO J=1 TO 2;
472  Y=X1=X2;
473  Z=X1-X2;
474  OUTPUT;
475  END;

NOTE: 缺失值的生成是对缺失值执行操作的结果。
       指定每个位置的方式: (次数)(行:列)。
      2 473:5
NOTE: 数据集 WORK.SAMPLESRS 有 2 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.00 秒


476  PROC MEANS DATA=SampleSRS VAR;
477  VAR Y Z;
478  RUN;

NOTE: 从数据集 WORK.SAMPLESRS 读取了 2 个观测。
NOTE: “PROCEDURE MEANS”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.01 秒


在ARRAY这步还是不懂怎么把抽出的样本读成X1、X2,请教各位大神这个该怎么解决?

二维码

扫码加我 拉你入群

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

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

全部回复
2016-11-15 09:50:38
proc sort data=SampleSRS;by Replicate i;run;

data X1(rename=(X=X1 i=i1)) X2(rename=(X=X2 i=i2));
        set SampleSRS;
        by Replicate;
        if first.Replicate then output X1;
        else output X2;
run;

data X1_X2;
        retain Replicate i1 i2 X1 X2;
        merge X1 X2;
        by Replicate;
run;
二维码

扫码加我 拉你入群

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

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

2016-11-15 10:12:45

data final;
   array c{2} x1-x2;
   array d{2} i1-i2;
  do a=1 by 1 until(last.Replicate);
  set SampleSRS;
  by Replicate;
   c{a}=x;
   d{a}=i;
end;
drop i x a;
run;
二维码

扫码加我 拉你入群

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

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

2016-11-16 13:50:28
hardychaochao 发表于 2016-11-15 09:50
proc sort data=SampleSRS;by Replicate i;run;

data X1(rename=(X=X1 i=i1)) X2(rename=(X=X2 i=i2));
...
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1-X2,。这个得出来的方差也是缺失值,提示Y、Z找不到
二维码

扫码加我 拉你入群

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

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

2016-11-16 13:51:36
RisingFine 发表于 2016-11-16 13:50
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1- ...
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1-X2,。这样算出来的X1、X2是有的,可是得出来的方差也是缺失值,提示Y、Z找不到
二维码

扫码加我 拉你入群

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

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

2016-11-16 14:22:24
RisingFine 发表于 2016-11-16 13:51
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1- ...
程序跑出来了!就是在数据步后面再加个proc print步骤,感谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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