首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并但保留所有观察结果?

合并但保留所有观察结果?
EN

Stack Overflow用户
提问于 2015-02-25 22:58:03
回答 2查看 148关注 0票数 4

我有三个数据集,分别是住院、门诊和专业索赔。我想要在这三个数据集中找到与烟草使用(1=yes烟草,0=tobacco)相关的独特人数。

因此,数据集基本上都是:

代码语言:javascript
复制
data inpatient;
input Patient_ID Tobacco;
datalines;
1 0
2 1
3 1
4 1
5 0
;
run;

我正在尝试合并住院患者、门诊患者和专业人员,以便在三个数据集中的任意一个中保留具有烟草声明的患者I,使用:

代码语言:javascript
复制
data tobaccoall;
merge inpatient outpatient professional;
by rid;
run;

然而,它正在用新数据集中的0覆盖一些1。我如何更好地合并数据集,以确定患者是否在任何数据集中有索赔?

EN

回答 2

Stack Overflow用户

发布于 2015-02-25 23:19:30

当您在SAS中合并共享变量名的数据集时,merge语句中右侧列出的数据集中的值将覆盖左侧数据集中的值。为了保留每个值,您需要在合并之前重命名变量。您可以在merge语句中通过在每个数据集之后添加一个rename=选项来完成此操作。

如果您想要一个变量来表示烟草索赔是否存在于这三个变量中的任何一个中,您可以使用max函数创建一个新变量来组合这三个不同的值。

代码语言:javascript
复制
data tobaccoall;
  merge inpatient    (rename=(tobacco=tobacco_in))
        outpatient   (rename=(tobacco=tobacco_out))
        professional (rename=(tobacco=tobacco_pro));
  by rid;
  tobacco_any = max(tobacco_in,tobacco_out,tobacco_pro,0);
run;
票数 7
EN

Stack Overflow用户

发布于 2015-02-25 23:52:59

如果您的数据是Merge .=不具有( missing ),那么您可以使用UPDATE语句,该语句的工作原理与1=has类似,只是它不会用missing覆盖非缺少的数据。

例如:

代码语言:javascript
复制
data inpatient;
input Patient_ID Tobacco;
datalines;
1 .
2 1
3 1
4 1
5 .
;
run;

data outpatient;
input Patient_ID Tobacco;
datalines;
1 1
2 1
3 .
4 .
5 .
;
run;

data want;
  update inpatient outpatient;
  by patient_id;
run;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28722252

复制
相关文章

相似问题

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