如何在sas中仅从混合变量列表(num+;char)中提取字符值
在可变列表中,既有数字值也有字符值,如何在sas中仅从中获取字符值。示例数据线仅在一个变量列表VAR1中,其中有一些值,例如:如何在sas中仅从混合变量列表(num+;char)中提取字符值,sas,etl,Sas,Etl,在可变列表中,既有数字值也有字符值,如何在sas中仅从中获取字符值。示例数据线仅在一个变量列表VAR1中,其中有一些值,例如: 123 xyz 457 abc 789 frf 233 gth ... 664 fgd 我必须从整个数据行中只提取那些字符值(abc、xyz等),我如何才能得到这些值。看看您是否可以使用这些值 data _null_; var1 = '123, xyz, 456, abc, 789, frf, 233, gth'; var2 = compbl(comp
123
xyz
457
abc
789
frf
233
gth
...
664
fgd
我必须从整个数据行中只提取那些字符值(abc、xyz等),我如何才能得到这些值。看看您是否可以使用这些值
data _null_;
var1 = '123, xyz, 456, abc, 789, frf, 233, gth';
var2 = compbl(compress(var1, '', 'ka'));
put var2=;
run;
编辑:
问题并不十分清楚,但是,如果单个值位于一列中,则可以使用
VERIFY
而不是更复杂的PRXMATCH
data have;
input var1 $; datalines;
123
xyz
457
abc
789
frf
233
gth
...
664
fgd
;
data want;
set have;
where 0 = verify (trim(var1), '0123456789');
run;
返回不在指定数据字符串中的字符串中第一个字符的位置。
...
详细信息VERIFY函数返回源中任何摘录中不存在的第一个字符的位置。如果VERIFY在至少一个摘录中找到源中的每个字符,则VERIFY返回0
此代码对我来说运行良好: 数据需求; 集有; 如果prxmatch('/\d+\s*$/',VAR1)>0,则删除;
运行 这是八个独立的变量还是一个包含八个值的变量?一个变量包含八个值数字也是字符。正确的术语应该是非数字。如果VAR1有一千多个值而不是八个值,那么我该怎么办?以前的逗号只是用来分隔值,数据集中没有逗号,这无关紧要。请参阅我编辑的答案。更多值,无逗号。谢谢,需要数据;集有;如果prxmatch('/\d+\s*$/',VAR1)>0,则删除;跑但这个答案对我有用。
data have;
input var1 $; datalines;
123
xyz
457
abc
789
frf
233
gth
...
664
fgd
;
data want;
set have;
where 0 = verify (trim(var1), '0123456789');
run;