楼主: 李真LZ
2819 13

[问答] 提取数据 [推广有奖]

11
albusdzx 发表于 2017-5-16 14:45:08
大神们写的函数太复杂了 都不认识,我写个简单的 适用于除了用中文标记数量(一台)以外的情况

data bbb;
set aaa;
length brand $50. num $50.;
x=strip(kreverse(y));
pos=indexc(x,'0123456789');
if missing(input(substr(y,length(y)-pos,1),best.)) then do;
brand=substr(y,1,length(y)-pos);
num=substr(y,length(y)-pos+1);
end;
else if not missing(input(substr(y,length(y)-pos,1),best.)) then do;
brand=substr(y,1,length(y)-pos-1);
num=substr(y,length(y)-pos);
end;
run;

12
foocares 发表于 2017-5-16 21:23:32
李真LZ 发表于 2017-5-16 09:57
这个程序直接删除了Y列,不是我想要的结果呀~
哦没看清,我以为后面两列是已有的数据,其实你想做拆分另行输出。看到前头有人给出答案了,恭喜解决。

13
李真LZ 发表于 2017-5-17 11:57:21
albusdzx 发表于 2017-5-16 14:45
大神们写的函数太复杂了 都不认识,我写个简单的 适用于除了用中文标记数量(一台)以外的情况

data bbb ...
当y列的数据>=1000的时候,这个函数对数据提取就不适用了,是什么情况?且“length brand 50.num50.”得需要更改一下“length brand   $ 50.”  才能运行

14
李真LZ 发表于 2017-5-17 12:00:46
foocares 发表于 2017-5-16 21:23
哦没看清,我以为后面两列是已有的数据,其实你想做拆分另行输出。看到前头有人给出答案了,恭喜解决。
嗯嗯,谢谢你~

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 08:19