2017-07-27 27 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):私が使用していました。このカイ二乗をどうやって行うのかについて誰も考えていますが、もし少なくとも1つの目にこの現象があるなら、この現象に対してポジティブなのでしょうか?

ありがとうございます!

+0

サンプルデータセットを投稿できますか? – Joe

+0

@Joe上記のスクリーンショットでは、データの表示例を掲載しました。あなたはもっと必要ですか? – ybao

+0

上記はあなたの問題を再現しません。予想される結果やコードの実際の結果など、問題を再現するのに十分な、画像形式ではなく、完全なデータを投稿してください。 – Joe

答えて

1

PROC FREQあなたが言ったとおりに:status=0ケースを数えます。

ここでは、より正確なツールを使用しなければならないときに、達成しようとしていることを達成するための平滑なツールを使用しています。例えば、PROC SORT NODUPKEYは、残酷なものです。そして、とにかくあなたが望むものを実際にはしません。

has/haveのデータセットをセットアップするには、たとえば、いくつかやってみましょう。最初に、実際には持っていない人をもう1つ追加します。

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; 

私は統計学者じゃないと、これは適切な分析であるかどうかに私のつま先を浸していないでしょうがあなたはまた、あなたのカイ二乗分析を行うことができるかもしれません。いずれにしても、あなたの最初のものよりも優れている可能性があります。少なくとも1つの目に状態があることを正しく認識しているためです。目の数を知る必要がある場合は、別のインジケータが必要な場合があります。

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

実際のデータに条件があるすべての患者が1人いる場合はもちろん、カイ二乗分析は適切ではありません。

+0

ありがとう!これは完璧です。データセット内のすべての患者がこの状態を呈しているわけではありません。私はその問題を説明するためにそこに置いただけです。 – ybao

関連する問題