全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2002 4
2007-12-06

data shuju;
      input type $ @;
      do block=1 to 3;
         input stemleng @;
         output;
         end;
      cards;
   clarion  32.7 32.3 31.5
   clinton  32.1 29.7 29.1
   knox     35.7 35.9 33.1
   o'neill  36.0 34.2 31.2
   compost  31.8 28.0 29.2
   wabash   38.2 37.8 31.9
   webster  32.5 31.1 29.7
   ;
  run;

这里面连续出现了2个@符号,我对@很不了解,不会用,哪位高手帮把这程序的具体过程解释一下呀?

二维码

扫码加我 拉你入群

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

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

全部回复
2007-12-6 07:57:00

一个@符是保持从一行中读数据给变量的意思,以数据第一行为例,input type $ @;第一个@符读clarion数据,input stemleng @;第二个@符读32.7,由于有do block=1 to 3;的循环,所以会从第一行中读32.7 32.3 31.5给stemleng变量,又因为每次循环都有output语句,所以读数值型数据每读一个就输出了,形成结果形如:

clarion 32.7
clarion 32.3
clarion 31.5
........

注意type的变量只要没改变,他就会保持上次的值

解毕

二维码

扫码加我 拉你入群

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

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

2007-12-6 09:09:00

今天起了个早,发现论坛被你们两个包场了~~

二维码

扫码加我 拉你入群

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

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

2007-12-6 09:23:00

当只有一个@出现时,就是告诉SAS在当前行等待,继续下面的语句,直到此行结束。@就是个指针,记住它上次在当前行中的地址。下面试运行结果:

                                 Obs    type       block    stemleng

                                  1    clarion      1        32.7
                                  2    clarion      2        32.3
                                  3    clarion      3        31.5
                                  4    clinton      1        32.1
                                  5    clinton      2        29.7
                                  6    clinton      3        29.1
                                  7    knox         1        35.7
                                  8    knox         2        35.9
                                  9    knox         3        33.1
                                 10    o'neill      1        36.0
                                 11    o'neill      2        34.2
                                 12    o'neill      3        31.2
                                 13    compost      1        31.8
                                 14    compost      2        28.0
                                 15    compost      3        29.2
                                 16    wabash       1        38.2
                                 17    wabash       2        37.8
                                 18    wabash       3        31.9
                                 19    webster      1        32.5
                                 20    webster      2        31.1
                                 21    webster      3        29.7

[此贴子已经被作者于2007-12-6 9:27:27编辑过]

二维码

扫码加我 拉你入群

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

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

2007-12-6 11:45:00

也就是说由于output是在do循环之内,因此在循环1-3次的过程始终没有跳出第一个@,也就是始终第一个@保持type不变喽?

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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