精華區beta Statistics 關於我們 聯絡資訊
> -------------------------------------------------------------------------- < 作者: wjuu (幽默風) 看板: Statistics 標題: [問題] 有關SAS.. 時間: Wed Nov 8 01:37:38 2006 請問一下: 檢查到重複 就把重複的資料全部殺掉的語法怎麼寫 proc sort nodupkey data=work.bb; by port_code; run; 上面的語法如果重複 會留下一筆 例如12 12 會留下12 現在希望能得到 檢查到重複 就把兩筆資料都殺掉 請問一下語法要改成怎樣 謝謝你的回答 > -------------------------------------------------------------------------- < 作者: alias (希望) 看板: Statistics 標題: Re: [問題] 有關SAS.. 時間: Thu Nov 9 01:09:19 2006 ※ 引述《wjuu (幽默風)》之銘言: : 請問一下: : 檢查到重複 就把重複的資料全部殺掉的語法怎麼寫 : proc sort nodupkey data=work.bb; : by port_code; : run; : 上面的語法如果重複 會留下一筆 例如12 12 會留下12 : 現在希望能得到 檢查到重複 就把兩筆資料都殺掉 : 請問一下語法要改成怎樣 謝謝你的回答 PROC SORT DATA=work.bb; BY port_code; RUN; DATA cc; SET work.bb; BY port_code; IF FIRST.port_code THEN n=0; n+1; IF LAST.port_code & n=1 THEN OUTPUT; RUN; 就試試看吧, 以上 > -------------------------------------------------------------------------- < 作者: jupit (lbd) 看板: Statistics 標題: Re: [問題] 有關SAS.. 時間: Thu Nov 9 16:17:05 2006 ※ 引述《alias (希望)》之銘言: : ※ 引述《wjuu (幽默風)》之銘言: : : 請問一下: : : 檢查到重複 就把重複的資料全部殺掉的語法怎麼寫 : : proc sort nodupkey data=work.bb; : : by port_code; : : run; : : 上面的語法如果重複 會留下一筆 例如12 12 會留下12 : : 現在希望能得到 檢查到重複 就把兩筆資料都殺掉 : : 請問一下語法要改成怎樣 謝謝你的回答 : PROC SORT DATA=work.bb; BY port_code; RUN; : DATA cc; SET work.bb; BY port_code; : IF FIRST.port_code THEN n=0; : n+1; : IF LAST.port_code & n=1 THEN OUTPUT; RUN; : 就試試看吧, 以上 如果是我會這麼寫 proc sort nodupkey data=work.bb; by port_code;run; data aa; set work.bb; if last.port_code=1; run; 我通常都是在id非唯一時..如果資料重複(所有欄位都相同情況下)取最後一個id or 同id而其他欄位並非全相同,則去排priority(看以何欄位為優先, by ....) 一樣取最後唯一的id > -------------------------------------------------------------------------- < 作者: alias (希望) 看板: Statistics 標題: Re: [問題] 有關SAS.. 時間: Fri Nov 10 10:12:03 2006 ※ 引述《jupit (lbd)》之銘言: : ※ 引述《alias (希望)》之銘言: : : PROC SORT DATA=work.bb; BY port_code; RUN; : : DATA cc; SET work.bb; BY port_code; : : IF FIRST.port_code THEN n=0; : : n+1; : : IF LAST.port_code & n=1 THEN OUTPUT; RUN; : : 就試試看吧, 以上 : 如果是我會這麼寫 : proc sort nodupkey data=work.bb; : by port_code;run; : data aa; : set work.bb; : if last.port_code=1; : run; : 我通常都是在id非唯一時..如果資料重複(所有欄位都相同情況下)取最後一個id : or 同id而其他欄位並非全相同,則去排priority(看以何欄位為優先, by ....) : 一樣取最後唯一的id 你的方法是當資料有重複的時候,只保留一個無重複的即可 即 若資料為 a b b c c c d d e e f f g 你的作法得到 a b c d e f g 的結果, 也就是去掉重複的部份 而我的作法會得到的是 a g , 也就是只要有重複, 我就都不要了 (程式中 last.port_code=1 時的n值代表 此種port_code的個數 若個數=1, 當然就代表此種port_code並無重複, 是為單一個的) 所以這兩種作法所會得到的結果是不同的 而我個人認為原PO需要的是 "只要有重複, 就不要" 因而提供一點拙見, 也歡迎指教. 祝 愉快