【发布时间】:2019-04-29 16:54:28
【问题描述】:
所以我使用 SUM 运行 PROC Summary 以了解某事的频率,我只有 160 个观察值,但是我遇到了频率总和为 161 的问题。我仔细检查了原始数据集,有 160 个观察和一切,但有些东西正在使频率达到 161,我不确定是什么。
我已经尝试了一些代码
PROC SQL;
CREATE TABLE DiseaseFreq AS
SELECT Concomitant_Disease,
count(*) AS Freq
FROM CAS.PreOp
GROUP BY Concomitant_Disease;
QUIT;
DATA Disease (KEEP=var freq RENAME=var=Concomitant_Disease);
SET DiseaseFreq;
LENGTH var $25. freq 3.;
DO i=1 BY 1 WHILE(SCAN(Concomitant_Disease,i,"~^,")^='');
var=STRIP(PROPCASE(SCAN(Concomitant_Disease,i,"~^,")));
Freq=Freq;
OUTPUT;
END;
RUN;
PROC SUMMARY DATA=Disease;
CLASS Concomitant_Disease;
VAR Freq;
OUTPUT OUT=Count SUM=Freq;
RUN;
【问题讨论】:
-
请显示日志并从 PROC Summary 中输出。我的猜测是您的数据步骤以某种方式添加了另一个观察结果。
-
你为什么在 proc sql 中使用 "count() AS Freq" 而不是 sum() ? freq 和 sum 会导致不同的结果
-
你指的是什么@Rhythm,而且整个方式非常不正确,因为我在另一个数据集上运行了代码,它甚至没有产生 160 或 161。
-
“频率”是指结果数据集中的观察次数吗?如果是这样,那么@data_null_ 已经给出了您正在寻找的答案。
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 3.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?