Re: [程式] SAS加總變數運算

看板Statistics作者 (爽轟)時間6年前 (2018/03/30 00:23), 6年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《aphrodite22 (啊哩布咧蹦)》之銘言: : [程式問題]:將變數分類個別加總再運算 : [軟體熟悉度]: : 新手 : [問題敘述]: : 資料如下 : 單位 姓名 AAA BBB CCC DDD : 資訊室 林小姐 S S R : 資訊室 周先生 R S S : 資訊室 王先生 R D S S : 資訊室 黃先生 R I D S : . : . : 希望呈現 : 單位 AAA BBB CCC DDD : 資訊室 : 收發室 : . : . : 而裡面的數據為 S總數/S總數+I總數+R總數 : [程式範例]: : 目前是想說用 : ODS TRACE ON/LISTING; : PROC FREQ Data =Work.a; : TABLE AAA BBB CCC DDD; : ODS OUTPUT OneWayFreqs=Work.b; : RUN; : ODS TRACE off; : PROC TRANSPOSE Data=Work.b out=Work.Tb; : ID AAA BBB CCC DDD ; : RUN; : Data new; : SET Work.Tb; : if _NAME_='Frequency' then new=(S/(S+I+R))*100 : PROC print; : RUN; : 但在轉置那邊會跑出 : WARING:204 observations omitted due to missing ID valuse : 之後的data new 就會顯示變數I為初始化 : 不知道是不是因為我變數太多所以無法使用這種方式 : 還是說我後面應該要怎麼改才能讓他只用我計算出來的次數? : 謝謝 proc sort data=work.a; by 單位; quit; data work.b; set work.a; by 單位; array FEQ[4] AAA BBB CCC DDD; if first.單位 then do; new=0; sum_new=0; end; do i = 1 to 4; if not missing(FEQ[i]) then do; sum_new+1; if FEQ[i]="S" then new+1; end; end; if last.單位 then do; new=new/sum_new*100; output; end; run; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.20.118 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1522340584.A.7D8.html ※ 編輯: songhome (111.249.20.118), 03/30/2018 00:23:46
文章代碼(AID): #1QlHBeVO (Statistics)
文章代碼(AID): #1QlHBeVO (Statistics)