2017-07-27 135 views
1

我有跟蹤某些眼睛現象的數據。有些患者雙眼都有,有的患者只用一隻眼睛。這是一些數據的樣子:SAS:具有多個ID變量的PROC FREQ

EyeID PatientID STATUS Gender 
1 1 1 M 
2 1 0 M 
3 2 1 M 
4 3 0 M 
5 3 1 M 
6 4 1 M 
7 4 0 M 
8 5 1 F 
9 6 1 F 
10 6 0 F 
11 7 1 F 
12 8 1 F 
13 8 0 F 
14 9 1 F 

正如你可以從上面的數據可以看出,總共有9名患者,他們都具有特定現象的一隻眼睛。

我需要計數這種眼現象的患者人數。 要獲取數據集中的總患者人數,我用:

PROC FREQ data=new nlevels; 
tables PatientID; 
run; 

要計算的患者的數量有眼睛的現象,我用:

PROC SORT data=new out=new1 nodupkey; 
by Patientid Status; 
run; 

proc freq data=new1 nlevels; 
tables Status; 
run; 

但是,它給了正確的號碼有現象的患者(9),但沒有正確的數字(0)。

enter image description here

我現在需要計算的這種現象的性別分佈。我用:

proc freq data=new1; 
tables gender*Status/chisq; 
run; 

enter image description here

然而,在交叉表上,它的誰都有的現象(9)患者正確的號碼,但不能沒有正確的數字(0)。有沒有人有關於如何做這個卡方的想法,如果至少有一隻眼睛有這種現象,那麼他們對這種現象是積極的嗎?

謝謝!

+0

你可以發佈一個示例數據集? – Joe

+0

@Joe我已經發布了一個在上面的屏幕截圖中顯示數據的例子。你需要更多嗎? – ybao

+0

以上內容不會重現您擁有的問題。請發佈完整的數據,而不是圖像形式,足以複製該問題,包括預期結果和代碼的實際結果。 – Joe

回答

1

PROC FREQ正在做你告訴它:計數status=0個案。

一般來說,當你可能應該使用更精確的工具時,你會使用一些鈍器工具來完成你想要完成的工作。例如,PROC SORT NODUPKEY就是一種矯枉過正的行爲,而且它並沒有真正做到你想要的東西。例如,爲了設置一個有/沒有的數據集,我們來做一些事情。首先我再添加一行 - 實際上沒有的行 - 所以我們看到這個行。

data have; 
    input eyeID patientID status gender $; 
    datalines; 
1 1 1 M 
2 1 0 M 
3 2 1 M 
4 3 0 M 
5 3 1 M 
6 4 1 M 
7 4 0 M 
8 5 1 F 
9 6 1 F 
10 6 0 F 
11 7 1 F 
12 8 1 F 
13 8 0 F 
14 9 1 F 
15 10 0 M 
;;;; 
run; 

現在我們使用數據步驟。我們最後需要一個患者級數據集,現在我們有了眼睛級別。所以我們創建了一個新的患者級別的狀態。

data patient_level; 
    set have; 
    by patientID; 
    retain patient_status; 
    if first.patientID then patient_status =0; 
    patient_status = (patient_Status or status); 
    if last.patientID then output; 
    keep patientID patient_Status gender; 
run; 

現在,我們可以運行你的第二個proc freq。還要注意你有一個很好的患者數據集。

title "Patients with/without condition in any eye"; 
proc freq data=patient_level; 
    tables patient_status; 
run; 
title; 

您可能還可以做你的卡方分析,雖然我不是一個統計學家,不會動用我的腳趾到這是否是一個適當的分析。無論如何,它可能比你的第一個更好 - 因爲它正確識別至少有一隻眼睛有/沒有身份。如果你需要知道眼睛的數量,你可能需要一個不同的指標。

title "Crosstab of gender by patient having/not having condition"; 
proc freq data=patient_level; 
    tables gender*patient_Status/chisq; 
run; 
title; 

如果您的實際數據讓每個患者都有這種病症,當然,卡方分析是不太可能的。

+0

非常感謝!太棒了。並非數據集中的每個患者都有這種情況。我只是在那裏說明這個問題。 – ybao