首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS Match-Merge语句创建重复案例

SAS Match-Merge语句创建重复案例
EN

Stack Overflow用户
提问于 2021-05-24 21:20:28
回答 1查看 54关注 0票数 0

我正在尝试合并2个具有公共标识符investigation_id的数据集。前两个步骤用于将数字格式应用于ID,因为它有时会导入为字符。下面是我目前使用的代码:

代码语言:javascript
复制
data data1;
    set data1(rename=(investigation_id=new_id));
    investigation_id=put(new_id, 12.);
    drop new_id;
    run;
data data2 ;
    set data2 (rename=(investigation_id=new_id));
    investigation_id=put(new_id, 12.);
    drop new_id;
    run;
proc sort data =data1 nodupkey;
by investigation_id
;
run;
proc sort data = data2 nodupkey;
    by investigation_id
;
run;
data final;
    merge data2 data1;
    by investigation_id;
    run;

当我运行它时,它会产生两倍的预期观察值,而不是通过ID进行匹配。

EN

回答 1

Stack Overflow用户

发布于 2021-05-24 22:57:12

处理“有时是字符,有时是数字”的一个建议是使用catsputinput有点不一致;在您的例子中,最有可能得到的结果是不同的(所以123123 )。当你的类型是“正确的”时,他们也会在你的日志中放入警告(所以如果你尝试input一个数字)。

CATS很好用,因为它保证了字符输出,消除了空格(左对齐),并且不会在日志中生成任何内容。当然,最好的办法是让你的输入数据保持一致,但如果这不实用,这也是可行的。

代码语言:javascript
复制
data data1;
    set data1(rename=(investigation_id=new_id));
    investigation_id=cats(new_id);
    drop new_id;
    run;
data data2 ;
    set data2 (rename=(investigation_id=new_id));
    investigation_id=cats(new_id);
    drop new_id;
    run;
proc sort data =data1 nodupkey;
by investigation_id
;
run;
proc sort data = data2 nodupkey;
    by investigation_id
;
run;
data final;
    merge data2 data1;
    by investigation_id;
    run;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67672784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档