全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2677 3
2014-11-14
在原数据集中使用SET进行修改,如何将修改的数据用OUTPUT生成新的数据集
二维码

扫码加我 拉你入群

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

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

全部回复
2015-1-9 21:40:19
SAS中利用SET和OUTPUT语句拆分数据集,不知下面的案例是否能到你的意思,有时我们需要根据某一分类原则把数据行分别存放到不同的数据集。比如,我们希望把数据集C9501中的所有男生的观测放到数据集C9501M中,把所有女生的观测放到C9501F中,可以使用如下程序:
  data c9501m c9501f;
  set c9501;
  select(sex);
  when('男')output c9501m;
  when('女')output c9501f;
  otherwise put sex= '有错';
  end;
  drop sex;
  run;
  proc print data=c9501m;run;
  proc print data=c9501f;run;
  这个程序中有两个地方需要注意:在DATA语句中,我们指定了两个数据集名,这表示要生成两个数据集。程序中用SET语句引入了一个数据集,这个数据集的观测如何分配到两个结果数据集中呢?关键在于OUTPUT语句。OUTPUT语句是一个可执行语句,它使得当前观测被写到语句指定的数据集中。这样,我们根据SELECT的结果把不同性别分别放到了两个不同数据集中。
  OUTPUT语句还可以用来强行写入数据集而不必象我们在数据步流程图中说明的那样等到数据步最后一个语句完成。数据步中有了OUTPUT语句后数据步流程中不再有自动写入观测的操作,而只能由OUTPUT语句指定输出。不指定数据集名的OUTPUT语句输出到第一个结果数据集。比如下面的程序生成一个包含1到10的及其平方的有10个观测的数据集:
  data sq;
  do i=1 to 10;
  j=i*i;
  output;
  end;
  run;
  proc print;run;
  如果删去上面的OUTPUT语句则结果数据集中只有i=11,j=100的一个观测。
二维码

扫码加我 拉你入群

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

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

2015-1-11 12:00:54
初学者多看看帮助文档比较好
二维码

扫码加我 拉你入群

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

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

2015-1-11 16:56:18
说得很详细
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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