SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 732|回复: 3
打印 上一主题 下一主题

SAS 字符型变量长度问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-4-24 08:57:44 | 只看该作者

SAS 字符型变量长度问题

The following SAS programs are submitted:
data fltaten;
input jobcode $ salary name $;
cards;
FLAT1 70000 Bob
FLAT2 60000 Joe
FLAT3 30000 Ann
;
run;
data desc;
set flatten;
if salary > 60000 then
description = ‘Over 60’;
else
description = ‘Under 60’;
run;
What is the value of the variable DESCRIPTION when the value for SALARY is 30000?

答案是 Under 6
为什么会是这个结果呢?
谢谢解答
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-4-24 10:21:51 | 只看该作者

Re: SAS 字符型变量长度问题

错误有二:
1. 两个数据集的拼写错误“data fltaten”与“set flatten”
2. 单引号应该在英文输入状态
[code:313mxhvo]data flatten;
input jobcode $ salary name $;
cards;
FLAT1 70000 Bob
FLAT2 60000 Joe
FLAT3 30000 Ann
;
run;
data desc;
set flatten;
if salary > 60000 then
description = 'Over 60';
else
description = 'Under 60';
run;[/code:313mxhvo]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-4-24 22:32:53 | 只看该作者

Re: SAS 字符型变量长度问题

如果不是误写,原因也可能是变量的长度已被定义为7,因此Under 60'的最后一个字节被截断。京剧
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-4-25 14:46:10 | 只看该作者

Re: SAS 字符型变量长度问题

data flatten;
input jobcode $ salary name $;
cards;
FLAT1 70000 Bob
FLAT2 60000 Joe
FLAT3 30000 Ann
;
run;
data desc;
length description  $ 8;
set flatten;
if salary > 60000 then
description = 'Over 60';
else
description = 'Under 60';
run;
proc print;run;
/*SAS在读入数据时是以第一个读入的数据作为新变量的标准,在第一个数据不是最长数据的情况下要自定义新变量的长度*/
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 13:22 , Processed in 0.070612 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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