|
|
沙发

楼主 |
发表于 2009-8-18 04:22:55
|
只看该作者
Re: SAS中如何批量使字符型变量转换为数字型变量
Suppose you have dataset like this:
data original;
Str='123';
ABCDE='23';
cde='6';
aaa='abcDE';
cc='12345';
gg='666';
x='789';
run;
After you create the dataset, please run the following codes. The data set 'Final' contains
what you need. If non-digital values exist in the original data set, it will be converted into missing values.
proc contents data=original position out=content(keep=name varnum) noprint;
run;
proc sql noprint;
select name into: name separated by ' '
from content order by varnum;
select compress(name)||'_1' into: name_1 separated by ' '
from content order by varnum;
quit;
DATA original_1(drop=i &name);
set original;
array all_char[*] _ALL_;
array all_num[*] &name_1;
do i = 1 to dim(all_char);
if not notdigit(all_char[i]) then all_num[i]=input(all_char[I], f8.);
end;
RUN;
data final(drop=i &name_1);
set original_1;
array all_num_1[*] _ALL_;
array all_num[*] &name;
do i=1 to dim(all_num_1);
all_num[i]=all_num_1[i];
end;
run; |
|