楼主: bluehaiku
4587 9

在sas中怎样将一个数据集复制100次,或者更大 [推广有奖]

  • 10关注
  • 2粉丝

讲师

73%

还不是VIP/贵宾

-

威望
0
论坛币
801 个
通用积分
14.6008
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
8765 点
帖子
212
精华
0
在线时间
624 小时
注册时间
2015-11-12
最后登录
2024-3-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data a;
a=1;
run;
data b;
do a=1 to 100;
   set b;
  output;
end;
run;
为什么上面的程序得到的结果还是数据集b的结果?谢谢
二维码

扫码加我 拉你入群

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

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

关键词:数据集 output outpu Data Run 程序

回帖推荐

l1i2n3i4n5g 发表于7楼  查看完整内容

/*方法一*/ data b1; do i=1 to 1000; do j=1 to 18; /*18是数据集a记录数*/ set a point=j; output; end; end; stop; run; /*方法二*/ %macro test1; data b2; set %do i=1 %to 1000; a %end; ; run; %mend; %test1; /*方法三*/ %macro test2; %do i=1 %to 1000; proc append base=b3 data=a; run; %end; %mend; %test2; 效率从高到低
沙发
jzf1891 发表于 2016-6-30 22:11:06 |只看作者 |坛友微信交流群
根据SAS PDV原理,虽将“”set b; output;"语句嵌套在Do loop中,但是SAS还是每个观测只读取一次。
如果想复制100次,建议用宏语句。

使用道具

data a;
a=1;
run;

data b;
        set a;
        s=1;
        do while (s<=100);
        output;
        s+1;
        end;
        drop s;
run;

使用道具

板凳
zqy458219593 发表于 2016-7-1 09:26:35 |只看作者 |坛友微信交流群
  1. data a;
  2. a=1;
  3. run;
  4. data b;
  5. do a=1 to 100;
  6.    set b(point=a);
  7.   output;
  8. end;
  9. run;
复制代码


逻辑没错,只不过要告诉sas 指针,就是我加的point, 还是points我忘记了

使用道具

报纸
suzhzh 发表于 2016-7-1 09:28:56 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-7-1 09:13
data a;
a=1;
run;
Shorter:
data b;
         set a;
         do s=1 to 100;
           output;
         end;
         drop s;
run;

使用道具

地板
bluehaiku 发表于 2016-7-1 09:50:15 |只看作者 |坛友微信交流群
谢谢各位大神,谢谢

使用道具

7
l1i2n3i4n5g 在职认证  发表于 2016-7-1 11:10:34 |只看作者 |坛友微信交流群
/*方法一*/
data b1;
        do i=1 to 1000;
                do j=1 to 18;
/*18是数据集a记录数*/
                           set a point=j;
                        output;
                end;
        end;
        stop;
run;

/*方法二*/
%macro test1;
data b2;
        set
%do i=1 %to 1000;
a
%end;
;
run;
%mend;
%test1;

/*方法三*/
%macro test2;
%do i=1 %to 1000;
proc append base=b3  data=a;
run;
%end;
%mend;
%test2;

效率从高到低

使用道具

8
teqel 发表于 2016-7-3 10:19:10 |只看作者 |坛友微信交流群
suzhzh 发表于 2016-7-1 09:28
Shorter:
data b;
         set a;
这个最简单

使用道具

9
420948492 发表于 2016-7-4 12:18:00 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2016-7-1 11:10
/*方法一*/
data b1;
        do i=1 to 1000;
{:3_42:}

使用道具

10
smilealways193 发表于 2016-7-5 09:09:29 |只看作者 |坛友微信交流群
data a;
  a=1;
run;
data b;
  if _n_=1 then set a;
  set b;
run;

使用道具

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

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

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

GMT+8, 2024-4-25 18:44