我试图在SAS中执行以下操作。
我有这样的数据集:
| F2 | F3 | PERIOD |
___________________________________________________________
| Text1(1001) Text2(1002) Text3(1003) | | 10-02-03 |
| Text4 | 1004 | 10-02-08 |
| Text5(1005) Text6(1006) | | 10-02-12 |
| Text7 | 1007 | 10-03-01 |
如果有多个值,我想要做的就是拆分F2列。所以数据集看起来像这样:
| F2 | F3 | Period |
___________________________________________________________
| Text1 | 1001 | 10-02-03 |
| Text2 | 1002 | 10-02-03 |
| Text3 | 1003 | 10-02-03 |
| Text4 | 1004 | 10-02-08 |
| Text5 | 1005 | 10-02-12 |
| Text6 | 1006 | 10-02-12 |
| Text7 | 1007 | 10-03-01 |
因此,括号中的值以F3列结束,PERIOD列保持不变。
我希望有人可以提供帮助。
答案 0 :(得分:1)
第一个datastep模拟输入的前两行,第二行执行您需要的操作。
干杯,弗朗西斯科
data in;
length f2 $64
f3 $4
period $8;
f2="Text1(1001) Text2(1002) Text3(1003)";
period="10-02-03";
output;
f2="Text4";
f3="1004";
period="10-02-08";
output;
run;
data out;
length outF2 $16;
set in;
noOfBlanks = countc(strip(f2),' ');
if noOfBlanks then do i=1 to noOfBlanks+1;
outF2=scan(f2,i," ");
f3 = prxchange("s/.*\(|\)//",-1,outF2);
outF2 = prxchange("s/\(.*\)//",-1,outF2);
output;
end;
else do;
outF2=f2;
output;
end;
drop f2 noOfBlanks i;
rename outF2 = f2;
run;