楼主: bluehaiku
5149 9

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

  • 10关注
  • 2粉丝

已卖:16份资源

讲师

75%

还不是VIP/贵宾

-

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

楼主
bluehaiku 发表于 2016-6-30 20:50:09 |AI写论文

+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次,建议用宏语句。

藤椅
孤单的我们 发表于 2016-7-1 09:13:40
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
拉您进交流群
GMT+8, 2025-12-30 05:58