楼主: 幸福微积分
2033 14

[原创博文] DO循环可以跨多个程序段嘛? [推广有奖]

  • 4关注
  • 2粉丝

大专生

60%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
3 点
热心指数
3 点
信用等级
2 点
经验
870 点
帖子
52
精华
0
在线时间
42 小时
注册时间
2010-11-7
最后登录
2016-3-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
Do循环可以跨多个程序段嘛?我写的行不大通,不知理论上可不可以,如果不行,怎么能让这个变量像其他语言里面的全局变量那样,整个小流程下来以后再来一个i++?
求教啊~~~
二维码

扫码加我 拉你入群

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

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

关键词:do循环 大通 程序

回帖推荐

YueweiLiu 发表于8楼  查看完整内容

过程之间的参数如果需要传递,用宏是比较方便的,给你写个简单的小例子:

本帖被以下文库推荐

沙发
bobguy 发表于 2012-8-26 03:44:06 |只看作者 |坛友微信交流群
There is no difference compared with other languages as I know.

使用道具

藤椅
fionajin91 发表于 2012-8-26 21:51:35 |只看作者 |坛友微信交流群

使用道具

板凳
幸福微积分 发表于 2012-8-27 09:36:29 |只看作者 |坛友微信交流群
bobguy 发表于 2012-8-26 03:44
There is no difference compared with other languages as I know.
额 ,那请问定义全局变量的话用什么句式呢?我想要做一个整体的大循环

使用道具

报纸
YueweiLiu 发表于 2012-8-27 20:33:45 |只看作者 |坛友微信交流群
前几天就看到了你这个帖子,其实是不太清楚你想问什么,最好你能给点儿具体的例子。

使用道具

地板
playmore 发表于 2012-8-28 10:49:58 |只看作者 |坛友微信交流群
幸福微积分 发表于 2012-8-27 09:36
额 ,那请问定义全局变量的话用什么句式呢?我想要做一个整体的大循环
定义全局变量用global xxx;就行了
另外优化算法最重要
太离奇的算法没效率,而且你过段时间自己都看不明白了
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

7
幸福微积分 发表于 2012-8-28 21:15:47 |只看作者 |坛友微信交流群
YueweiLiu 发表于 2012-8-27 20:33
前几天就看到了你这个帖子,其实是不太清楚你想问什么,最好你能给点儿具体的例子。
恩恩  嘿嘿    我是说我现在的数据处理需要每次处理n行,这n行数据的处理我就用了好几个proc 和data程序段了(就是我下面的这些程序),处理完一次我还想要i++,处理下一个n行数据,直到所有short2数据及的数据处理完为止,请问,我这个循环该怎么加呢?
PROC IMPORT OUT= WORK.short2
            DATAFILE= "E:\SAS 9.1.3Data\080401.xls"
            DBMS=EXCEL REPLACE;
                        sheet="CR";
     GETNAMES=YES;
     MIXED=YES;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
         run;
data short2;

/*选取的观测值,循环时,firstobs=t  obs=t+1,t取值1到95*/
proc sql;
        create table pq11 as
        select * from short2(firstobs=1 obs=2);
quit;
        
run;
/*转置*/
proc transpose data=want out=pq1 name=var prefix=d;
run;
/*形成期升序排序*/
proc sort data=pq1;
by d1;
run;
proc print data=pq1 label noobs;/*boobs不显示obs*/
run;
/*创建赢者组合和输者组合 */
proc sql;
select avg(d2)as looser from pq1(firstobs=1 obs=10) ;
select avg(d2) as winner from pq1(firstobs=87 obs=96);
run;
/*记录每一次的赢者与输者的差额*/
data score ;
array ACR(*) acr1-acr96 (1,2,3,4,5);/*可以设一个数组记录每一期的return*/
acr(t)=winner-looser;/*无法调用!还没有完成!!!*/
run;

使用道具

8
YueweiLiu 发表于 2012-8-29 14:13:22 |只看作者 |坛友微信交流群
过程之间的参数如果需要传递,用宏是比较方便的,给你写个简单的小例子:
  1. proc sql;
  2.         select avg(height) into :height from sashelp.class;
  3. quit;
  4. %put &height;

  5. data want;
  6.         heightavg=&height;
  7. run;
复制代码
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

9
YueweiLiu 发表于 2012-8-29 14:14:24 |只看作者 |坛友微信交流群
data步里可以用 call symput 将观测值赋给宏变量。

使用道具

10
幸福微积分 发表于 2012-8-29 22:54:06 |只看作者 |坛友微信交流群
YueweiLiu 发表于 2012-8-29 14:13
过程之间的参数如果需要传递,用宏是比较方便的,给你写个简单的小例子:
嗯  可以了  哈哈    多谢多谢

使用道具

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

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

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

GMT+8, 2024-4-30 17:32