簡體   English   中英

SAS如何僅對某些值進行頻率

[英]sas how to do frequencies for only certain values

我有一些調查數據以及可能的答復,例如:

         Q1
Person1  Yes
Person2  No
Person3  Missing
Person4  Multiple Marks
Person5  Yes

我需要按問題計算頻率,以便僅將是/否(其他問題的響應頻繁,非常頻繁等變化)計入總數中,而不是帶有多個標記的問題。 有沒有辦法使用proc freq或其他方法排除這些?

結果:

Yes: 2
No: 1
Total: 3

使用proc freq,我將執行以下操作:

proc freq data=have (where=(q1 in ("Yes", "No")));
tables q1 / out=want;
run;

輸出:

Q1  Count   Percent
No  1   33.333333333
Yes 2   66.666666667

proc sql:

proc sql;
select 
    sum(case when q1 eq "Yes" then 1 else 0 end) as Yes
    ,sum(case when q1 eq "No" then 1 else 0 end) as No
    ,count(q1) as Total
from have
where q1 in ("Yes", "No");
quit;

輸出:

Yes No Total 
2 1 3 

最好的方法是使用格式。

與其將數據存儲為字符串,不如將其存儲為數字變量。 這使您可以使用數字缺失值來編碼那些您認為不正確的響應值; 使用格式可以讓您吃得飽飽的(即允許您仍然擁有那些漂亮的響應標簽)。

這是一個例子。 要了解這一點,您需要了解SAS 特殊缺失 請注意, missing語句告訴SAS將輸入中的單個“ M”視為.M (對於D和R類似)。 然后,我顯示兩個PROC FREQ結果,一個排除了缺失,一個包括了缺失,以顯示差異。

proc format;
  value YNQF
   1 = 'Yes'
   2 = 'No'
   . = 'Missing'
   .M= 'Multiple Marks'
   .D= "Don't Know"
   .R= "Refused"
  ;
quit;

missing M R D;
data have;
  input Q1 Q2 Q3;
  format q1 q2 q3 YNQF.;
  datalines;
1 1 2
2 1 R
. . 1
M 1 1
1 . D
;;;;
run;

proc freq data=have;
  tables (q1 q2 q3);
  tables (q1 q2 q3)/missing;
run;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM