楼主: fyp198744
1885 2

数组循环问题 [推广有奖]

  • 0关注
  • 1粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5181 点
帖子
257
精华
0
在线时间
258 小时
注册时间
2016-5-23
最后登录
2019-9-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data adsl1;
    set adsl_;
    array ca(20) (2 3 4 5 6 7 9 12 13 14 15 16 17 18 19 20 21 22 22.1 39);
    array vca(20) AGEGR4 SEX ETHNIC RACE COUNTRNM Region  BLBMIGR1 BHBA1GR1 BLDLGR1 MIHIFL CRHIFL CABGHIFL
                BHYPERFL BSUSFL BLLMFL BSTATFL  BNSLLMFL BSMKSGR1 BSMKSGR2 GFRGR1;
    length var $1000;

    do i=1 to 20;
        ord_g=ca(i);
        var=vca(i);
        output;
run;

*****************************************************************
AGEGR4 SEX ETHNIC RACE COUNTRNM Region  BLBMIGR1 BHBA1GR1 BLDLGR1 MIHIFL CRHIFL CABGHIFL BHYPERFL BSUSFL BLLMFL BSTATFL  BNSLLMFL BSMKSGR1 BSMKSGR2 GFRGR1这些都是数据集已有变量。
因为sas总是以数据集形式保存变量数据的,并不存在单独的变量(除了宏变量)。所以我就很难理解这个循环!我一直认为当do进行到i=20的时候ord_g=39;var=GFRGR1;(整列都是)那这样前面的循环就白做了!但是事实上sas跑出来跟我的想法不一样!他是存在循环的!但是我不理解!
比如说当i进行到10时,_n_=1到9的观测会不会被覆盖掉?




不知道我有没有表达清楚

二维码

扫码加我 拉你入群

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

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

关键词:Ethnic Region length output array

沙发
wwang111 发表于 2016-8-16 11:05:06 |只看作者 |坛友微信交流群
data步从data adsl1开始第一次执行,此时_N_=1, 碰到run;之后,返回到data adsl的时候,_N_才会加1;
比如在第一次执行的时候,i=1 to 20都是在_N_=1的条件下执行的,循环里有output,所以碰到output就会输出一条记录,所以在_N_=1的条件下就会输出20条记录,循环结束,才会碰到run,此时才会返回data步的开头,然后_N_=2,继续执行,以此类推。

ps:程序里循环的那部分,output语句后面应该有一个end;

使用道具

藤椅
teqel 发表于 2016-8-16 11:05:43 来自手机 |只看作者 |坛友微信交流群
fyp198744 发表于 2016-8-16 10:38
data adsl1;
    set adsl_;
    array ca(20) (2 3 4 5 6 7 9 12 13 14 15 16 17 18 19 20 21 22 22.1 3 ...
你每次都output生成一行数据

使用道具

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

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

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

GMT+8, 2024-4-27 12:14