PROC摘要SUM返回1比它应该高

问题描述 投票:0回答:2

所以我正在使用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;
sas summary proc
2个回答
1
投票

为什么要截断FREQ变量的精度?您告诉SAS只保留存储浮点数所需的八个字节中的三个字节。在Windows / Linux上,只有足够的位来表示精确到8,192的数字。抛弃较低阶的精度很可能是你计算失败的原因。

将FREQ的LENGTH设置为8.或者只保留它,SAS将默认存储所有8个字节。

enter image description here


1
投票

您需要PROC SUMMARY语句中的NWAY选项。

© www.soinside.com 2019 - 2024. All rights reserved.