SAS如何对重复记录中的变量求和

Posted

技术标签:

【中文标题】SAS如何对重复记录中的变量求和【英文标题】:SAS How to sum a variable in duplicate records 【发布时间】:2020-10-25 03:25:28 【问题描述】:

这里是 Noob SAS 用户。 我有一个带有 PatientID 的医院数据集和一个计算入院和出院天数的变量。

那些多次入院的患者会出现相同的患者 ID,并记录他们每次住院的天数。

我想总结每位患者的住院总天数,然后只有一个患者 ID 记录包含所有住院天数的总和。有谁知道我会怎么做?

【问题讨论】:

您是否尝试过 Proc MEANS 使用类或 ID ?或 Proc SQL 按 ID 分组?如果您在编写代码时遇到问题,请添加一些示例数据和您编写的代码。 请提供可直接重现的样本数据并说明您遇到的问题。 【参考方案1】:

你想select distinctsumdays_in_hospitalgroup by patientID 这会得到你想要的:

proc sql;
create table want as
select distinct
patientID,
sum(days_in_hospital) as sum_of_days
from have
group by patientID;
quit;

【讨论】:

您不需要distinct 关键字,因为查询有group by 子句。 谢谢汤姆,这是真的。【参考方案2】:

您也可以使用 proc summary。

proc summary data= hospital_data nway;
     class patientID;
     var days;
     output out=summarized_data (drop = _type_ _freq_) sum=;
run;

这将创建一个名为 summary_data 的新数据集,其中包含每个患者 ID 的总天数。 (nway 选项会删除整个汇总行,而 drop 语句会删除您不需要的额外的默认汇总列。)

【讨论】:

以上是关于SAS如何对重复记录中的变量求和的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中对包含分类变量的列的行数求和[重复]

识别和标记R中的部分重复记录

abap 如何得到内表中不重复的记录。

如何按 MySQL 中的最后一个重复项对记录进行分组?

SAS 对变量进行组内编号、循环编号、递增编号和有限重复循环编号

联合中重复记录的总和