- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我正在尝试使用 SAS PRX 函数从我的数据集中提取子字符串。但它只返回完全匹配,而我需要它更灵活并提取匹配各种条件的那些。 我已经在下面复制了我的数据。如您所见,我的数据中的一个变量是“brand
我是一名优秀的程序员,十分优秀!