看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: SAS [程式問題]: 資料處理 [軟體熟悉度]: 熟悉 [問題敘述]: 先敘述一下兩個資料(隨便做的測試資料): 第一個資料是學號與編號 https://imgur.com/kGKPpae 第二個資料是編號與其對應到的班級及班級編號 https://imgur.com/bFadEMX 現在要利用第二個資料,以NUM為準,將班級與班級編號做成format, 再利用這些format put至第一個資料完成合併 資料預期呈現是這樣的: https://imgur.com/SXwneVW 現在的問題是,因為start的部分是numeric,而要做的兩個format各為numeric 與character,沒有很懂做出來的是format還是informat,跟put的時候要用input還是put (還是跟proc imformat/format有關?或是在datastep的時候要加type = ?) 最後put上資料後,出現了這樣的錯誤: The format $CLASSNUM was not found or could not be loaded. 但在前面proc的部分,format的確被做出來了 NOTE: Format CLASSNUM has been output. 然而,若把put classnum的那行關掉,資料呈現會是這樣的: https://imgur.com/BuYELem 原本預期class那欄應該出現class的名稱,現在看來卻是沒有成功put上值 想知道中間哪個環節出了問題 還有想請大神們解釋一下那些datastep 做出來的format informat使用的put input關係 [程式範例]: 以下是以datastep做成fotmat的過程 data class ; set test(keep = Num class) ; fmtname = "$class" ; rename Num = start class = label ; run ; proc sort data = class nodupkey ; by _all_ ; run ; proc format cntlin = class ; run ; data ClassNum ; set test(keep = ClassNum Num) ; fmtname = "ClassNum" ; rename Num = start ClassNum = label ; run ; proc sort data = ClassNum nodupkey ; by _all_ ; run ; proc format cntlin = ClassNum ; run ; 做好format之後,以format將資料put上第一個資料 data want ; set have ; class = put(StudentID, $class.) ; ClassNum = put(StudentID, classnum.) ; run ; -- 嗷嗚嗷嗚 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.150.232.189 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1604816786.A.B97.html
west1996: data step的整理中的end看起來都是多餘的,單點對應不需 11/08 15:29
west1996: 要end(如果要寫,end跟start欄位內容應該要一樣) 11/08 15:29
west1996: 確定一下你的data step完是不是只有fmtname,start,label 11/08 15:29
west1996: 三個欄位 11/08 15:29
目前把end移除了,現在確定data step完只剩下fmtname, start, label三個欄位, 還是一樣沒有成功把format put上去 ※ 編輯: woowolf (118.150.232.189 臺灣), 11/08/2020 19:30:46
andy30135: 這個應該用data step merge by Num就能做出你要的結果 11/08 23:30
andy30135: 了 11/08 23:30
我知道用MERGE甚或SQL就能達到我想要的結果,但因為想了解他們之間的關係 所以這裡只是我隨便創個資料拿來測試研究用的, 還是希望可以成功用這個方法達到目的,還希望大家為我解解惑 ※ 編輯: woowolf (114.32.82.158 臺灣), 11/09/2020 08:12:56
west1996: proc format fmtlib; select $class classnum; run; 11/10 18:43
west1996: 用這個看一下你做出來的format內容長什麼樣子 11/10 18:43
nkes60917: 如果不是兩邊都是文字的話不能用$開頭的format 11/24 15:50