2014-10-16 54 views
0

我有兩個數據集:SAS:PROC排序nodupkeys錯誤

  • 「母親」 - 5512個觀測其中變量 「母親」= 1
  • 「all_women」 - 2336750個觀測其中變量 「母親」 = 0

我將二者結合起來,如下所示:

data combined; 
set mothers all_women; 

現在作爲母親我已經在數據集all_women中,我想刪除重複的條目 - 條件是我保留觀察值,其中「MOTHER」= 1。

我試過如下:

proc sort data=combined; by ID DESCENDING MOTHER; run; 

proc sort data=combined nodupkeys; by ID; run; 

但我失去了一些母親因爲我只剩下5458觀察其中「MOTHER」 = 1。我做了什麼來介紹這個錯誤?

+0

你確認「母親」有5,512個獨特ID嗎? – Jeff 2014-10-16 13:22:23

+0

將兩個數據集合設置在一起並期望與第一個數據集相同數量的記錄似乎很奇怪,我希望在組合數據集中使用合併而不是SET。 – Reeza 2014-10-16 14:03:50

回答

2

不是使用NODUPKEY,而是使用FIRST./LAST。處理。

proc sort data=combined; 
    by ID DESCENDING MOTHER; 
run; 

data want; 
    set combined; 
    by ID descending mother; 
    if not (first.ID) and (mother=0) then delete; 
run; 

這將保留任何只有母親= 0的ID(保留1個記錄每個),並且將保持所有母親= 1行。

1

您是否檢查了母親數據集中是否有任何重複的ID?第二個proc排序會消除這些行。

您可以檢查就像這樣:

proc sort data = mothers nodupkey out = mothers_dedup dupout = mothers_dups; 
    by ID; 
run; 

如果mothers_dups包含超過0的觀察,這也許能夠解釋的問題。

+0

剛剛選中 - 問題的根源在於母親數據集中存在重複的ID。但是,我需要保留這些重複項,因爲它們對應於多次出生。有沒有辦法只消除「母親」= 0的重複? – user2568648 2014-10-16 13:34:09