2014-11-21 75 views
1

我有一個數據集與ID和兩個其他變量結構。 這個id不是唯一的,它在數據集中出現超過1次(患者可以接受一次以上的臨牀治療)。我如何才能放棄整個觀察(整條線),只要它是以前的完美克隆觀察(基於其他兩個變量值)?我不想用一個非常長的if語句。 謝謝。SAS下降克隆觀察

+0

以前的具體觀察結果(例如,如果obs 9是obs 8的重複),還是先前的觀察結果? – Joe 2014-11-21 14:48:26

回答

3
proc sql; 
select distinct * from olddata; 
quit; 

聽起來像一個簡單的SQL修復。如果選擇所有列,select distinct選項將刪除數據集中所有完全重複的行。

+2

如果你想創建一個輸出數據集,在'select'之前添加'create table newdata as'。 – Leo 2014-11-21 15:17:42

0

如果你特別希望確定是否連續兩行是相同的(但不打算匹配其他線路分開相同的行),您可以通過語句中使用一個notsorted,然後firstlast變量。

data want; 
    set have; 
    by id var1 var2 notsorted; 
    if first.var2; 
run; 

只要它們在數據集上是連續的,就會爲任何相同的id/var1/var2組保留第一條記錄。當然,如果您首先對數據集by id var1 var2進行排序,這將始終刪除重複項,但未排序,仍然適用於刪除並置的連續對(或多個)。

0

我喜歡@ JJFord的答案,但爲了完整起見,這也可以使用nodupe選項proc sort完成:

proc sort data=mydata nodupe; 
    by id; 
run; 

你選擇作爲by變量是什麼其實並不重要這裏。重要的一點就是指定nodupe選項。