Re: [程式] SAS 欄位字串的比對(包含的概念)
data main;
input text $20. ;
cards;
芒果20顆+蘋果10粒
今天吃西瓜*1
蘋果2顆
今年下雨荔枝泡湯了
芒果20顆;香蕉2跟
香蕉,4根
;
data list;
input list $ ;
cards;
芒果
蘋果
;
proc sql noprint;
select distinct list into : list_1 separated by "#"
from list
;quit;
%put &list_1;
%macro out1 ;
data main1;
set main;
%let v1=1;
%do %until (%length(%scan(&list_1.,&v1,"#"))=0);
%let xvar1=%scan(&list_1.,&v1,"#");
text1=ksubstr(text,kfind(text,"&xvar1."),2);
if missing(text1)=0 then output;
%let v1=%eval(&v1+1);
%end;
run;
%mend out1;
%out1;
我直接用你提供的範例資料做測試
有問題可以再討論
※ 引述《linda841004 (水凝結)》之銘言:
: [軟體程式類別]:SAS
: [程式問題]:資料處理
: [軟體熟悉度]:熟悉
: [問題敘述]:
: 有兩個檔案:
: 檔案1為「被比對的清單」如圖
: http://i.imgur.com/vDbKe11.jpg
: 檔案2為「比對清單」如圖
: http://i.imgur.com/j6Fec8H.jpg
: 操作概念為:
: 如果比對清單內的比對內容欄位,
: 有‘包含’在被比對清單的文字段欄位中,
: 則比對成功,
: 並輸出被比對清單的擷取欄位值
: (結果如下圖)
: http://i.imgur.com/utpRZdm.jpg
: 因比對清單很多,想問問看有沒有什麼方法可以處理此問題呢?
: 感謝各位相助~~~
: [程式範例]:
: 目前使用的方法會因為比對清單過多而寫到瘋掉(現已先用此方法解決[有借助excel]),
: 想請教有無更好的方法解決呢?
: 程式如下:
: %macro output(a,b,c);
: proc sql;
: create table &c. as
: select 文字段,&b. as 比對內容
: from TEST1
: where 文字段 like (&a.)
: ;
: quit;
: %mend;
: %output('%蘋果%','蘋果',t1);
: %output('%芒果%','芒果',t2);
: /*如有多的清單則往下加*/
: data all_list;
: set t1-t100;
: run;
: (111/6/2補充:借助excel的方法)
: http://i.imgur.com/oKfMxim.jpg
: 再補充:
: 被比對資料幾萬筆、比對資料約數百筆
: 再次感謝各位大大們~~
: -----
: Sent from JPTT on my Google Pixel 6.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.11.127 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1654154428.A.B33.html
推
06/02 22:02,
1年前
, 1F
06/02 22:02, 1F
→
06/02 22:02,
1年前
, 2F
06/02 22:02, 2F
→
06/02 22:02,
1年前
, 3F
06/02 22:02, 3F
→
06/02 22:03,
1年前
, 4F
06/02 22:03, 4F
→
06/02 22:37,
1年前
, 5F
06/02 22:37, 5F
→
06/02 22:37,
1年前
, 6F
06/02 22:37, 6F
→
06/02 22:37,
1年前
, 7F
06/02 22:37, 7F
推
06/02 23:31,
1年前
, 8F
06/02 23:31, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):