c****y 发帖数: 584 | 1 原来的data set 是这样的
1 2
a1 b0
a2 b1,b2,b3
a3 b4
a4 b5,b6
. .
. .
想要的结果是这样
1 2
a1 b0
a2 b1
a2 b2
a2 b3
a3 b4
a4 b5
a4 b6
. .
. .
水平很菜, 请大侠不吝赐教。 | h********o 发帖数: 103 | 2 Try this:
=====================================
DATA TEST;
INPUT X $ Y $;
DO I = 1 TO COUNT(Y, ",") + 1;
Z = SCAN(Y,I);
OUTPUT;
END;
DROP I Y;
CARDS;
a1 b0
a2 b1,b2,b3
a3 b4
a4 b5,b6
; | c****y 发帖数: 584 | 3 Thanks very much!! It works!!
There is another SAS question, hope daxia can help as well.
In the original data set, it is like this
1
0000032
0000178
000000054
000003890
.
.
.
The form I want is to get rid of all 0 in the front, so it should like this
1
32
178
54
3890
.
.
.
Thanks very much!! I will send big baozi to you! | h********o 发帖数: 103 | 4 Is this what you want?
=========================
DATA TEST;
INPUT X : $9.;
Y = INPUT(X,BEST.);
CARDS;
1
0000032
0000178
000000054
000003890
;
PROC PRINT DATA = TEST NOOBS;
RUN;
====
X Y
1 1
0000032 32
0000178 178
000000054 54
000003890 3890 | c****y 发帖数: 584 | | c****y 发帖数: 584 | 6 Thank you so much. I use the following
data noleading zero;
set leading zero;
x=y;
place =indexc (new, '123456789');
substr (new,1,place-1)="";
drop place;
output;run; | h********o 发帖数: 103 | 7 DATA TEST;
INPUT X : $9.;
Y = STRIP(PUT(INPUT(X,BEST.),BEST.)); * CHARACTER;
Z = INPUT(X,BEST.); * NUMERIC;
CARDS;
1
0000032
0000178
000000054
000003890
; | c****y 发帖数: 584 | | h********o 发帖数: 103 | 9 Why?
=========
DATA TEST;
INPUT X : $9.;
Y = STRIP(PUT(INPUT(X,BEST.),BEST.)); * CHARACTER;
Z = INPUT(X,BEST.); * NUMERIC;
CARDS;
1
0000032
0000178
000000054
000003890
;
PROC PRINT DATA = TEST NOOBS;
RUN;
===========================================================
X Y Z
1 1 1
0000032 32 32
0000178 178 178
000000054 54 54
000003890 3890 3890 |
|