SAS中文论坛

标题: SAS中如何批量使字符型变量转换为数字型变量 [打印本页]

作者: shiyiming    时间: 2009-8-17 16:42
标题: SAS中如何批量使字符型变量转换为数字型变量
各位好!
    不知道SAS中能不能快速的把字符型变量转换成数字型的变量。

接到的数据库不太规范,一律都是字符型的,应该如何批量的转换其变量的类型?总变量有几千个!
   
    很困惑! 希望大家帮忙!
作者: shiyiming    时间: 2009-8-18 04:22
标题: 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;
作者: shiyiming    时间: 2009-8-18 09:20
标题: Re: SAS中如何批量使字符型变量转换为数字型变量
谢谢热心帮忙! 高手!
作者: shiyiming    时间: 2009-8-18 20:44
标题: Re: SAS中如何批量使字符型变量转换为数字型变量
如果只是某个变量,比如year是个字符型,你直接year1= year*1 就可以了。
作者: shiyiming    时间: 2009-8-20 14:17
标题: Re: SAS中如何批量使字符型变量转换为数字型变量
单个的我知道,直接做数学运算,或者用INPUT函数!均可!但是变量名都得必须重新命名,很是麻烦




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2