SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 3313|回复: 9
打印 上一主题 下一主题

关于变量长度的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-2-23 14:32:35 | 只看该作者

关于变量长度的问题

当我从excel中用proc import导入数据时,经常会出现中文变量长度不够的情况,比如在excel中有一个字段
name
这是一个小例子

导入到sas里就变成
name
这是一个小

不知哪位大侠可以赐教
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-2-23 16:06:52 | 只看该作者

关于sas字符长度问题

你的问题可以用length定义变量长度

例如:
   data test;
       length name $ 20.;
       inflile '';
       input
    run;

zai
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-2-23 16:52:38 | 只看该作者

Re: 关于变量长度的问题

[quote="yees":54f6e]当我从excel中用proc import导入数据时,经常会出现中文变量长度不够的情况,比如在excel中有一个字段
name
这是一个小例子

导入到sas里就变成
name
这是一个小

不知哪位大侠可以赐教[/quote:54f6e]
不知道proc import 中是否可以用length语句
或者用楼上的方法,但应该要先把excel存为文本格式吧。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-2-23 18:07:56 | 只看该作者
问题就在于proc import 中没有定义变量长度的选项,虽然,用data步来做是可以的,如果能把这个问题解决的话,导数据是很方便的
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-2-23 20:10:56 | 只看该作者

老兄,有点不明白

老兄,我试过倒入一个字段长为30的xls文件,没有问题呀!能不能具体点?
不过,还是建议csv来导入,呵呵!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-2-23 21:42:34 | 只看该作者
难道这跟机器的配置有关,我在两三台机器上发现过这个问题了,excel里的中文字段导到SAS里就是不全,我想这也有可能跟盗版不彻底有关
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2004-2-24 15:32:40 | 只看该作者

hi

如果读excel文件,需要sas的一个产品Access to PC File,请检查一下你的sas这个模块安装是不是有问题!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2004-3-1 17:57:29 | 只看该作者

DDE

filename wer dde 'excel|sheet!r1c1:r100c3' notab;
data sas-data-set;
        length var $25;
        infile wer missover dsd dlm='09'x;
        input var $;
run;

其实,我个人为DDE是从EXCEL导入导出数据最方便的一种方法了,而且只用BASE模块。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2004-3-5 20:16:50 | 只看该作者
SAS 读取Excel的文件确实存在问题,一是长度可能被错误截断,二是字段类型可能被错误识别,三是SAS Access for PC File Formats也是要花钱的,如果只是调用Proc import/export来对付Excel和CSV,text还是比较亏,:(
另外,用proc import读取CSV不加注意也会有问题,可以试一下造一个CSV,包含一个字符字段,前面几行是10个字长,后面有几行是25个字长,proc import仍是会有错误截断现象。

最可靠的方法...只能靠自己的双手啊 :?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2004-4-1 14:29:07 | 只看该作者
用csv比excel格式稍微好一些,为了防止字符被短截的情况,最好将最长的字符放在第一行,这样可能不会出错了。

另外,可以将excel文件格式转化为dbf格式再用 proc import,好像基本上不会出现上面的问题,只是简单试了一下,:)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 00:08 , Processed in 0.137278 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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