SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2634|回复: 14
打印 上一主题 下一主题

请教sas数据集中的数据类型转换问题?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-1-18 12:45:32 | 只看该作者

请教sas数据集中的数据类型转换问题?

一个sas数据集中有一个变量a;是数值型的,我想要把它转换为字符型的应该怎么做?不能在数据集中增加新的变量,应该怎样转换呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-1-18 14:24:35 | 只看该作者

基本就是这样

data a;
input x;
cards;
1
2
3
;
run;

data a;
set a;
y=x||'';
keep y;
rename y=x;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-1-18 15:37:35 | 只看该作者

感谢

非常感谢:)
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2005-1-18 15:56:33 | 只看该作者

再请教一下

请问 y=x || ''是什么意思,如果我想对y变量的长度做一下限制,如3个字符那么长应该怎么来做啊,文档上哪里有将这段内容的呀?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2005-1-18 19:54:56 | 只看该作者

呵呵

这是让SAS强制转化。
要限制长度就先加一个
length y $3. 在set 语句前面。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2005-1-18 23:29:02 | 只看该作者

have a try

data a;
input x;
cards;
1
2
3
;
run;


data a(keep=x) ;
set a(rename=x=y);
x=put(y, 3.);
run;


像这种转化变量类型的情况,最好是重新生成一个新的DATASET,或者生成新的变量,因为别人或者别的程序可能已经使用原来的变量类型了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2005-1-19 09:00:58 | 只看该作者

感谢

谢谢两位,问题已解决:)
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2005-1-19 09:34:42 | 只看该作者

请教

如果要将字符型变量转换为数值型,又应该怎么做呢?是不是还是用put函数啊?,我不知道该用那个format,试了好几个都不行
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2005-1-19 10:08:36 | 只看该作者

to xlbjgjsh

data a;
input x $;
datalines;
1
2
3
;
run;
data b(keep=x);
set a(rename=x=y);
x=input(y,8.);
run;
proc contents data=b;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2005-1-19 14:43:09 | 只看该作者

进一步的问题

data a;
     input x $
             y 2.
             z  $;
     datalines;
     1  1  1
     2  2  2
     3  3  3
     ;
run;
我要将其中的x转换为数值型,y转换为字符型,z不变。转换完成生成的数据集应该怎么做呢。仍然是x,y,z三列?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 21:22 , Processed in 0.071627 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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