楼主: crackman
2801 6

跟crackman读SAS程序(3) [推广有奖]

已卖:401份资源

院士

83%

还不是VIP/贵宾

-

威望
6
论坛币
91928 个
通用积分
23.5045
学术水平
424 点
热心指数
505 点
信用等级
256 点
经验
112978 点
帖子
2940
精华
0
在线时间
2532 小时
注册时间
2007-4-26
最后登录
2025-6-25

初级热心勋章 中级热心勋章 初级学术勋章 初级信用勋章

楼主
crackman 发表于 2010-8-20 01:03:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
http://www.pinggu.org/bbs/thread-888061-1-1.html原程序在这里
data a2;
num=0;
do _n_=1 by 1 until(last._col0);
set a1;
by _col0;
num+1;
output;
end;
run;
proc sql;
select max(num) into : obs
from a2;
quit;
%macro aa();
data a3;
do i=1 by 1 until(last._col0);
set a1;
by _col0;
array m(*) m1-m%left(&obs.);
m(i)=rate3_change;
end;
drop i rate3_change;
run;
%mend;
%aa;

这个哥们先后用转置和数据实现了按照要求读入数据并实现既定的数据集格式
先分析这个哥们的程序:
1.建立数据集A1,并进行排序,为后面的SET做一个准备
2.在建立数据集A2的时候,设置一个变量NUM,这个变量是表示有每一_COLO重复的次数,这个很关键,因为后面就是根据重复的次数来设置数组的。
3.将每一个_COLO重复的次数的变量NUM,用SQL赋值给一个宏变量,然后作为数组的界值,而且随着_n_的不同,引起的NUM不同,导致数组的界值不同,因为相同的_COLO的rate3_change能在一个观测里体现出来。

这个里面最关键的是寻找宏循环中数组的界值与_COLO重复次数,用了一个NUM和宏变量&obs.
值得学习的一点
二维码

扫码加我 拉你入群

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

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

关键词:crackman Ackman CRACK sas程序 CRA 程序 SAS crackman

已有 6 人评分学术水平 热心指数 信用等级 收起 理由
kaeod + 1 + 1 + 1 精彩帖子
醉_清风 + 1 + 1 + 1 SAS板块因你而更精彩
peijiamei + 3 + 3 精彩帖子
soporaeternus + 1 + 1 竟然还有3,再三支持,楼主热心
hopewell + 1 + 1 + 1 精彩帖子
jingju11 + 1 + 1 好心肠啊

总评分: 学术水平 + 7  热心指数 + 8  信用等级 + 4   查看全部评分

沙发
jingju11 发表于 2010-8-20 01:42:06
data a2;
num=0;
do _n_=1 by 1 until(last._col0);
set a1;
by _col0;
num+1;
output;
end;
run;
proc sql;
select max(num) into : obs
from a2;
quit;
以上的求obs的过程太复杂了。。。
%macro aa(); ***这个macro没有用,应该去掉;
data a3;
do i=1 by 1 until(last._col0); ***这一步用的好;解决了1. 非_TEMPORARY_ ARRAY无法retain的问题,2.自动输出last by观测 100分精华;
set a1;
by _col0;
array m(*) m1-m%left(&obs.);***等同于array m{&obs};
m(i)=rate3_change;
end;
drop i rate3_change;
run;
%mend;***去掉;
%aa;***去掉;
其实这道题的正解是proc transpose,也是他给出的答案。
已有 1 人评分学术水平 热心指数 收起 理由
crackman + 1 + 1 有道理

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
nkwilling 发表于 2010-8-20 02:26:25
辛苦了,crackman!

板凳
xiaoxiahu0571 发表于 2010-8-20 13:23:37
。。。。。。。。。。。。。。。

报纸
soporaeternus 发表于 2010-8-20 13:32:33
1 我们都是看hopewell的程序长大的,伴我们度过了整个童年
2 不是"哥们"......
Let them be hard, but never unjust

地板
sushe1527 发表于 2010-8-20 13:53:05
不是哥们。。

7
crackman 发表于 2010-8-20 14:24:36
四楼的不是哥们,那是干啥的?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 13:28