看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: SAS [程式問題]: 資料處理 [軟體熟悉度]: 低(1~3個月) [問題敘述]: 有一份原始資料大概長這樣 (科目幾十個) 人 國文 數學 物理 化學 地理 歷史 .... A 10 80 70 95 63 45 .... B 12 50 48 22 6 10 .... C 16 123 45 66 70 89 .... ... ... 我想要得到一張匯總的表長這樣 科目 總分 及格人數 59分的人數 介於90~100的人 國文 15780 900 50 10 數學 50000 100 999 123 物理 ... 化學 ... 地理 ... 歷史 ... ... [程式範例]: 之前寫到一半的程式不在手邊 不過邏輯大概是這樣 先用匯入原始資料,把第一欄也當作資料而不是變數名稱 而欄位名稱自動為F1~F50 (假設科目有49個) 接著建立兩個陣列 array course(49) F2-F50 array total_score(49) s1-s49 if _n_~=2 時以計算總分為例子 迴圈i 1~49 total_score(i)+course(i) 迴圈結束 if結束 如果最後一筆和第一筆才輸出 所以最後我會得到 F2 F3 ... F50 s1 s2 ... s49 國文 數學 ... 天文 . . . . 1234 4568 9897 9999 然後再讓這個資料集 _n_=2時 用ARRAY讓F2-F50等於s1-s49 最後轉置 捨棄s1-s49再把分數從文字轉回數字就可以得到我要的表格的其中一個(總分) 如果我要算其他項目就要重複產生很多資料集再MERGE起來 就算一開始寫在同一個資料集 也會變成一個很寬的資料集,感覺怪怪的 可是不用這種彆扭的方法的話 變成幾十個科目都要手動打 想請問一下有沒有甚麼比較聰明的寫法 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.199.141 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1421928371.A.D17.html ※ 編輯: songhome (1.169.199.141), 01/22/2015 22:02:22