作者Lynnhan (林翰)
看板Statistics
标题[程式] SAS loading array 问题
时间Thu Mar 14 05:47:33 2019
[软体程式类别]:
SAS
[程式问题]:
SAS loading arra相关问题
[软体熟悉度]:
新手
[问题叙述]:
在看SAS Adv的书中 有关loading array部分
看完解释 研究了两小时还是不懂他的意思
data work.lookup1;
array Targets{1997:1999,12} _temporary_;
if _n_=1 then do i= 1 to 3;
set sasuser.ctargets;
array Mnth{*} Jan--Dec;
do j=1 to dim(mnth);
targets{year,j}=mnth{j};
end;
end;
程式中sasuser.ctargets是一个3*13的table
variables分别是 year Jan Feb ... Dec
像这样
https://imgur.com/a/b4Jhyhn
想请教的是 _n_ = 1 说明的是对於哪个资料夹的iteration?
并且在接下来的 do i = 1 to 3里面後续没有 i 继续执行
非常想不通为什麽这样可以填满targets的array
因为在code里面并没有看到指定第几个row读取
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 50.255.135.49
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1552513655.A.207.html
1F:推 west1996: _n_=1里面的外层回圈那三圈每一圈会set 一笔资料进来,s03/14 07:14
2F:→ west1996: et进来的资料里会有year栏位,它的值就表示了内层回圈要03/14 07:14
3F:→ west1996: 塞进哪一个row了03/14 07:14
4F:→ x1234567: _n_ 是系统变数,指第一笔。所以if _n_ =1 then do; 用03/14 08:16
5F:→ x1234567: 在要一开始就做,且只做一次。03/14 08:16
谢谢大大们的解答 但我的疑问比较偏向说
do i = 2时是让系统做了什麽?
还有year的三个值分别是1997 1998 1999
那有哪个指令是让SAS把year读到1998 跟 1999的呢?
非常感谢
6F:推 west1996: set03/14 12:03
谢谢west大 那这样说 省略if _n_ = 1 then do i = 1 to 3的话
是否也能让array完整被loaded?
既然set可以一次读完整个档案 那为何需要if _n_ = 1还有外层三圈?
感谢回答!
感谢以上两位大大解答 已发各100P表感谢!
※ 编辑: Lynnhan (71.192.89.193 美国), 03/28/2020 15:04:26