PROC摘要总和返回比应有的高1

时间:2019-04-29 16:54:29

标签: sas summary proc

所以我用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;

2 个答案:

答案 0 :(得分:1)

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

将FREQ的LENGTH设置为8。或者不理会它,SAS默认将存储所有8个字节。

enter image description here

答案 1 :(得分:1)

您需要在PROC Summary语句中使用NWAY选项。