SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 767|回复: 2
打印 上一主题 下一主题

merge是变量长度问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

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

merge是变量长度问题

SAS中MERGE的时候,BY变量的长度不一致,会报错,如变量USER_ID中的一个输入格式是18为字符,另一个输入格式是32字符,匹配时会“WARNING: 输入数
据集为 BY 变量 user_id 指定了多个长度。这可能导致意外的结果。”,有影响吗?咋处理?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-10-10 08:50:21 | 只看该作者

Re: merge是变量长度问题

length attribute

If the length attribute is different, [color=#FF0000:16b1mb9v]SAS takes the length from the first data set that contains the variable[/color:16b1mb9v]. In the following example, all data sets that are listed in the MERGE statement contain the variable Mileage. In QUARTER1, the length of the variable Mileage is four bytes; in QUARTER2, it is eight bytes and in QUARTER3 and QUARTER4, it is six bytes. In the output data set YEARLY, the length of the variable Mileage is four bytes, which is the length derived from QUARTER1.

data yearly;
   merge quarter1 quarter2 quarter3 quarter4;
   by Account;
run;
To override the default and set the length yourself, specify the appropriate length in a LENGTH statement that precedes the SET, MERGE, or UPDATE statement.

以上的内容是SAS 9.1 Help中的原话。搜索关键词:“Reading, Combining, and Modifying SAS Data Sets”,“Combining SAS Data Sets: Basic Concepts”
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-10-10 09:19:43 | 只看该作者

Re: merge是变量长度问题

昨天后来试了一下,示例如下:
数据集A中USER_ID的LENGTH、INFORMAT及FORMAT的长度分别是32、32、32;数据集B中USER_ID的LENGTH、INFORMAT及FORMAT的长度分别是18、18、18;
如果
DATA C;
MERGE A B;
BY USER_ID;
RUN;
则没有问题;
如果
DATA C;
MERGE B A;
BY USER_ID;
RUN;
则会出现“WARNING: 输入数据集为 BY 变量 user_id 指定了多个长度。这可能导致意外的结果。”
如果是后者出现的问题,则可以通过如下办法改变:
data a;
length user_id $ 18;
set a;
run;
然后在用
DATA C;
MERGE B A;
BY USER_ID;
RUN;
猜想1:是不是和SAS中MERGE的原理有关,也就是说MERGE的时候,最主要是看BY变量的属性中的LENGTH,而不是FORMAT和INFORMAT的长度?
猜想2:上述出现的WARNING其实对结果是没有什么影响的?
不知道哪位高人可以指点一下?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-6 06:20 , Processed in 0.078563 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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