看板 Statistics 關於我們 聯絡資訊
※ 引述《sheiswe (no matter)》之銘言: 恕刪 你的問題不難,只要找出「斜對角的那筆資料」在哪個 obs 然後再利用 point= 這個 set statement option 把它抓進來 (當然,抓進來的時候需要重命名,以避免衝突) 事情就解決了 假設資料是 5*5 的話,#obs 跟 (#_name, #id) 的對應關係如下 (# means "number of") #obs = (#_name_ - 1) * 5 + #id 完整測試程式碼如下 你可自行把把 data want(keep=) 的變數拿掉,看看是不是抓到了正確的資料。 data a; input Id $ _name_ $ j i; cards; X001 X001 12000 500 X002 X001 0 200 X003 X001 100 300 X004 X001 100 23 X005 X001 5000 333 X001 X002 101 532 X002 X002 0 863 X003 X002 705 101 X004 X002 305 201 X005 X002 505 103 X001 X003 101 532 X002 X003 0 863 X003 X003 405 101 X004 X003 405 201 X005 X003 525 103 X001 X004 121 532 X002 X004 0 863 X003 X004 705 101 X004 X004 305 201 X005 X004 505 103 X001 X005 101 532 X002 X005 0 863 X003 X005 705 101 X004 X005 305 201 X005 X005 505 103 ; run; data want(keep=Id _name_ j i); set a; * obtain matrix subscripts; n_id = input(substr(ID, 2, 3), 3.); n_name = input(substr(_name_, 2, 3), 3.); * find #obs required for adding by corresponding (n_id, n_name) = (n_name, n_id); pt = (n_id - 1) * 5 + n_name; * read; set a(rename=(id=id2 _name_=_name_2 j=j2 i=i2)) point=pt; j = j + j2; i = i + i2; run; * check; proc print; run; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.14.9 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1435387101.A.5BC.html ※ 編輯: realtemper (114.27.14.9), 06/27/2015 14:43:32
sheiswe: 愛大,你說的指令我都還沒機會用到過,馬上來試試~真謝謝 06/29 10:51
sheiswe: 試出來了~感謝大大講解得這麼詳細^^ 06/30 12:59
realtemper: 好說!不過真是令人無言的稱呼啊....從此不用宅暱稱QQ 06/30 20:44