2016-04-20 76 views
0

這裏是我下面的數據結構:如何刪除不需要的ID?

我只需要ID 2因爲所有的患者都健在,因此試圖刪除ID 1

ID sex status 

1  2  A 

1  2  A 

1  2  A 

1  2  D 

2  1  A 

2  1  A 

2  1  A 
+1

歡迎SO。你試過什麼了? – bastelflp

+0

您是否需要從數據集中刪除特定的(已知的)ID,或者您需要一個更一般的代碼來刪除那些不是全部都存在的ID? –

+0

@bastelflp:我打印看到那些在某些條件下跌倒,並手動複製他們的ID做一個如果然後刪除選項。我正在尋找更簡單的方法來解決這個問題,如果我有100個id,那麼我可能無法手工輸入所有內容來刪除它們。 – Douce

回答

0

如果你真的想從源數據集刪除記錄,你可以這樣做:

PROC SQL; 
    DELETE FROM MyData WHERE ID = 1; 
QUIT; 

但是,如果你想保留源數據集原樣;也許你會再次使用它,這將是最好的,從它創建一個新的數據集,就像這樣:

PROC SQL; 
    CREATE TABLE MyFilteredData AS 
    SELECT ID, sex, status 
    FROM MyData 
    WHERE ID = 2; 
QUIT; 

DATA MyFilteredData; 
    SET MyData; 
    IF ID = 2; 
RUN; 
0
proc sql; 
    delete from your_data where id ~= 2; 
quit; 
0

PROC SQL將創建一個新的數據集Want來自原始數據集Have,僅包括沒有狀態=「D」的ID:

proc sql; 
    create table Want as 
    select * 
    from Have 
    where ID not in 
     (select distinct ID 
     from Have 
     where status="D") 
    ; 
quit; 
+0

爲什麼你會使用子查詢呢?爲什麼不呢:'where status〜='D''而不是? – Nicarus

+0

因爲我的理解是,目標是刪除那些至少有一個'D'的ID,即使相同的ID也有'A' –