看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: 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://www.ptt.cc/bbs/Statistics/M.1552513655.A.207.html
west1996: _n_=1裡面的外層迴圈那三圈每一圈會set 一筆資料進來,s03/14 07:14
west1996: et進來的資料裡會有year欄位,它的值就表示了內層迴圈要03/14 07:14
west1996: 塞進哪一個row了03/14 07:14
x1234567: _n_ 是系統變數,指第一筆。所以if _n_ =1 then do; 用03/14 08:16
x1234567: 在要一開始就做,且只做一次。03/14 08:16
謝謝大大們的解答 但我的疑問比較偏向說 do i = 2時是讓系統做了什麼? 還有year的三個值分別是1997 1998 1999 那有哪個指令是讓SAS把year讀到1998 跟 1999的呢? 非常感謝
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