看板 Statistics 關於我們 聯絡資訊
※ 引述《west1996 ()》之銘言: ※ 引述《Justee (想像力)》之銘言: : 我有一組資料,其中有兩個欄位我想找出其中是否有相同的資料 : Data: Frequency : TimeA TimeB : 01,02,03,04 03,05,07,15,21,23 : 03,04,08 15,21,23 : 我在板上爬過文,用"字串"、"模糊比對"、"比對"、"隔"等關鍵字都找不到相關資料, : 試用 Scan來寫 : DATA Frequency; SET Frequency; : DO i=1 TO 24; : DO j=1 TO 24; /*因為TimeA和TimeB中最多只有24個值*/ : IF SCAN(TimeA,i,",")=SCAN(TimeB,j,",") THEN meet="Y"; ELSE meet="N"; : END; END; RUN; : 不知道為何跑不起來.... : 我的資料筆數共約500筆,懇請版上大大幫忙偵錯! %macro match; data frequency; set frequency; %do i=1 %to 24; %do j=1 %to 24; %if not (&i.=1 and &j.=1) %then %do;else %end; if scan(timea,&i.,",")=scan(timeb,&j.,",") then meet="Y"; %end; %end; else meet="N"; run; %mend; %match ==================================以上感謝West大=========================== 小弟對Macro不熟,但跑出來的資料檔中似乎結果有一點問題, 在某些時候不該出現Meet=Y的時候會出現,因此略做修改: %macro Match; data Frequency; set Frequency; %do i=1 %to 24; %do j=1 %to 24; /* %if not (&i.=1 and &j.=1) %then %do;else %end; 因為我看不懂,所以我刪掉了這一行*/ if Scan(timea,&i.)=Scan(timeb,&j.)>0 then meet="Y"; /*我猜會抓到missing=missing=>meet=Y的資料*/ %end; %end; IF Meet^='Y' THEN Meet='N' run; %mend Match; %match; 這樣一改似乎就跑出了結果,但我不太懂為何West大原本的程式碼跑不出來, 但我的跑得出來,這樣我用起來這個程式碼會驚驚的!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.121.97 ※ 編輯: Justee 來自: 140.112.121.97 (02/15 21:49) ※ 編輯: Justee 來自: 140.112.121.97 (02/16 16:17)