gpt4 book ai didi

regex - SAS PRX 请提取子串

转载 作者:行者123 更新时间:2023-12-01 10:27:45 26 4
gpt4 key购买 nike

我正在尝试使用 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;

最佳答案

对于你的最后一个问题(将变量设置为 missing 而不是删除观察,从最后的条件 do 中删除 output 语句。只需将其更改为:

if prxmatch(re, brandmodel) then model=prxposn(re, 0, brandmodel);

这将导致输出所有观察结果,无论是否定义了模型。

对于你的问题的其余部分,它实际上是关于与 Perl 正则表达式的模式匹配,而不是特定于 SAS 的。这也很棘手,因为某些模型中有空格。尝试发布一个不同的问题,询问与您想要的匹配的 Perl 正则表达式(带有那些标签)。

此外,张贴一些您希望输出的示例。例如,您对这样的输入有什么期望:

Olympus VR 340 16MP 10x 3.0 LCD Red|148.00 
Vivitar VX137-Pur Digital Camera|39.00

关于regex - SAS PRX 请提取子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com