z**********i 发帖数: 12276 | 1 有个CHARACTER variable:
ID
0121K
1021I
0212H
如何把它们变成NUMERIC VARIABLE呢?
我试了,ID_N=INPUT(ID,5.0)
可是不行呢?
多谢指教! |
d******r 发帖数: 1389 | 2 我试了一下,可以呀
【在 z**********i 的大作中提到】 : 有个CHARACTER variable: : ID : 0121K : 1021I : 0212H : 如何把它们变成NUMERIC VARIABLE呢? : 我试了,ID_N=INPUT(ID,5.0) : 可是不行呢? : 多谢指教!
|
z**********i 发帖数: 12276 | 3 NOTE: Invalid argument to function INPUT
折腾一晚上了。
能把你试的,给我看看吗?
多谢!
【在 d******r 的大作中提到】 : 我试了一下,可以呀
|
z**********i 发帖数: 12276 | 4 DATA A;
INPUT ID $;
CARDS;
0102K
1201I
1232J
;
RUN;
DATA B;
SET A;
ID_N=INPUT(ID,5.0);
RUN;
啥问题呢?
NOTE: Invalid argument to function INPUT at line 483 column 7.
ID=0102K ID_N=. _ERROR_=1 _N_=1
NOTE: Invalid argument to function INPUT at line 483 column 7.
ID=1201I ID_N=. _ERROR_=1 _N_=2
NOTE: Invalid argument to function INPUT at line 483 column 7.
ID=1232J ID_N=. _ERROR_=1 _N_=3
【在 z**********i 的大作中提到】 : 有个CHARACTER variable: : ID : 0121K : 1021I : 0212H : 如何把它们变成NUMERIC VARIABLE呢? : 我试了,ID_N=INPUT(ID,5.0) : 可是不行呢? : 多谢指教!
|
d******r 发帖数: 1389 | 5 data x;
input
ID: $;
datalines;
0121K
1021I
0102H
;
proc contents data=x;run;
data new;
set x;
ID_n=input(ID,5.0);
proc contents data=new;run;
这样的,我也是新手,不知道有没有什么问题
【在 z**********i 的大作中提到】 : DATA A; : INPUT ID $; : CARDS; : 0102K : 1201I : 1232J : ; : RUN; : DATA B; : SET A;
|
z**********i 发帖数: 12276 | 6 哈哈。ID_n实际上MISSING.
虽然,从CONTENT来看是NUMERIC.
这就是我的问题,为什么没有值呢?
多谢!!
【在 d******r 的大作中提到】 : data x; : input : ID: $; : datalines; : 0121K : 1021I : 0102H : ; : proc contents data=x;run; : data new;
|
G**S 发帖数: 1108 | 7 应为你的id里有char value
try this;
id_n=input(substr(id,1,4),4.);
【在 z**********i 的大作中提到】 : 有个CHARACTER variable: : ID : 0121K : 1021I : 0212H : 如何把它们变成NUMERIC VARIABLE呢? : 我试了,ID_N=INPUT(ID,5.0) : 可是不行呢? : 多谢指教!
|
z**********i 发帖数: 12276 | 8 我不想改变id的名字,因为很多,如果变了就有相同的了。
看来,是没办法了。不改变id,而且把它变成numeric的了。
【在 G**S 的大作中提到】 : 应为你的id里有char value : try this; : id_n=input(substr(id,1,4),4.);
|
G**S 发帖数: 1108 | 9 you can separate id into two variables, then use these two to do sorting or whatever.
id_n=input(substr(id,1,4),4.);
id_c=substr(id,5);
【在 z**********i 的大作中提到】 : 我不想改变id的名字,因为很多,如果变了就有相同的了。 : 看来,是没办法了。不改变id,而且把它变成numeric的了。
|
z**********i 发帖数: 12276 | 10 这个想法很好,多谢!!
sorting or whatever.
【在 G**S 的大作中提到】 : you can separate id into two variables, then use these two to do sorting or whatever. : id_n=input(substr(id,1,4),4.); : id_c=substr(id,5);
|
g*******y 发帖数: 380 | 11 能解释一下你为什么要把ID变成numeric variable吗? |
z**********i 发帖数: 12276 | 12 因为还有其他一些numeric variables一起transpose.
如果,和ID一起transpose,它们也变成character variable了。
这时,我发现日期在这两个datasets里发生了变化:
如果日期按照numeric来transpose,它显示的是days,比如17832;
而如果按照character来transpose,它显示的是mm/dd/yyyy.
下一步,我要与另一个dataset比对日期,所以,我希望是days,比较方便。
但我还想keep ID,因为比对后,我要报告是哪个ID.
【在 g*******y 的大作中提到】 : 能解释一下你为什么要把ID变成numeric variable吗?
|
w***y 发帖数: 114 | 13 I think you create a variable "newid" which can represent you id,
newid=_n_;
you also can use
proc format
value idf
1=""
2=""
3=''
change it back to id |