SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 3197|回复: 4
打印 上一主题 下一主题

SAS中如何批量使字符型变量转换为数字型变量

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-8-17 16:42:10 | 只看该作者

SAS中如何批量使字符型变量转换为数字型变量

各位好!
    不知道SAS中能不能快速的把字符型变量转换成数字型的变量。

接到的数据库不太规范,一律都是字符型的,应该如何批量的转换其变量的类型?总变量有几千个!
   
    很困惑! 希望大家帮忙!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 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;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-8-18 09:20:50 | 只看该作者

Re: SAS中如何批量使字符型变量转换为数字型变量

谢谢热心帮忙! 高手!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-8-18 20:44:18 | 只看该作者

Re: SAS中如何批量使字符型变量转换为数字型变量

如果只是某个变量,比如year是个字符型,你直接year1= year*1 就可以了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-8-20 14:17:09 | 只看该作者

Re: SAS中如何批量使字符型变量转换为数字型变量

单个的我知道,直接做数学运算,或者用INPUT函数!均可!但是变量名都得必须重新命名,很是麻烦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 23:09 , Processed in 0.164721 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表