作者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/m.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