我想使用SAS PRX函數從我的數據集中提取一個子串。但它只返回完全匹配,而我需要它更靈活,並提取符合各種條件的匹配。SAS PRX提取子串請
我在下面複製了我的數據。正如您所看到的,我的數據中的一個變量是「brandmodel」,它包含特定相機的品牌名稱和型號#。我需要爲模型#s提供一個單獨的列。所以我使用PRX函數來提取它們,因爲它們通常遵循以下模式之一:
例如:JX100或JX10或JX1(即1-2個字母,後跟1-3位數字。程序(在數據下面複製)可以處理,但是遇到問題的地方是:如何提取那些字母與數字之間用空格或連字符分隔的模型#,以及如何將它們提取到相同的位置列「模式」爲那些通通?此外,一些意見沒有模型#S,我怎麼可以讓他們設置爲失蹤,而不是被完全放棄?
Brandmodel|Price
iTwist F124 Digital Camera -red|49.00
Vivitar IF045 Digital Camera -Blue|72.83
Liquid Image Underwater Camera Mask|128.00
Impact Series Video Camera MX Gogglesâ„¢|188.00
Olympus VR 340 Silver|148.00
Olympus TG820 Digital Camera Black|278.00
Olympus VR 340 16MP 10x 3.0 LCD Red|148.00
Vivitar VX137-Pur Digital Camera|39.00
Olympus SZ-12 Digital Camera -Black|198.00
Olympus VG160 Digital Camera Red|98.00
Olympus VR340 Purple|148.00
Olympus TG820 Digital Camera Silver|298.00
Olympus TG820 Digital Camera Blue|278.00
Olympus VG160 Digital Camera Orange|98.00
Olympus TG820 Digital Camera Red|298.00
Fujifilm FinePix AX500 Red|78.63
Canon A2300 Silver|98.63
Canon A810 Red|75.00
Nikon Coolpix S2600 Digital Camera - Red|88.00
Nikon Coolpix L25 Digital Camera - Silver|82.00
Casio Exilim ZS10BK|128.00
Olympus TG-310 14 MP blue Digital Camera|148.00
Hipstreet Kidz Digital Camera - Blue|14.93
Casio Exilim ZS10PK|128.00
Olympus TG-310 14 MP Digital Camera orange|148.00
SAS計劃
的data walnov21p2;
length brandmodel $ 80;
infile "G:\File2\data\store_nov21\storenv21p2.csv" firstobs=2 dlm="|" dsd;
input brandmodel price;
re= prxparse('/[[:alpha:]]{1,3} \d{1,4}/');
if prxmatch(re, brandmodel) then
do;
model=prxposn(re, 0, brandmodel);
output;
end;
run;
謝謝。我在SAS在線論壇上解決了它。 – user1901322
你可以(也應該)發佈你的問題的答案並接受它。這確保其他人尋找相同的答案可以在這裏找到它。 – itzy