[英]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.