gpt4 book ai didi

sas - 在 SAS 中使用压缩和扫描创建新变量

转载 作者:行者123 更新时间:2023-12-01 12:55:00 24 4
gpt4 key购买 nike

我是 SAS 新手,只想使用压缩和扫描在新列中保留另一列括号之间的内容:

 x 
abc(animal)
efg(food)
hij(plant)

我尝试过:

DATA NEW 
set OLD;
y = (compress(scan([x], 2, '('), ')');
RUN;
PROC PRINT NEW;
RUN;

但我似乎无法让它工作。任何见解都会有所帮助。

最佳答案

@tom 的答案是完美的,另一种方法是使用 prxsubstr。

 data have;
input x $20.;
datalines;
abc(animal)
efg(food)
hij(plant)
;

prxparse \(.+?\) is to find anything between parenthesis
\( -- starting of parenthesis
.+?\( --- anything till closing parenthesis

调用 prxsubstr 捕获它找到模式的位置及其长度。然后执行 substr 来获取括号内的值

data want;
set have;
if _n_= 1 then do;
retain re;
re = prxparse('/\(.+?\)/');
end;
call prxsubstr(re, trim(x), position, length);

if position gt 0 then
new=substr(trim(x),position+1, length-2);
run;

关于sas - 在 SAS 中使用压缩和扫描创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858875/

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