這裏是我下面的數據結構:如何刪除不需要的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
這裏是我下面的數據結構:如何刪除不需要的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
如果你真的想從源數據集刪除記錄,你可以這樣做:
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;
proc sql;
delete from your_data where id ~= 2;
quit;
這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;
爲什麼你會使用子查詢呢?爲什麼不呢:'where status〜='D''而不是? – Nicarus
因爲我的理解是,目標是刪除那些至少有一個'D'的ID,即使相同的ID也有'A' –
歡迎SO。你試過什麼了? – bastelflp
您是否需要從數據集中刪除特定的(已知的)ID,或者您需要一個更一般的代碼來刪除那些不是全部都存在的ID? –
@bastelflp:我打印看到那些在某些條件下跌倒,並手動複製他們的ID做一個如果然後刪除選項。我正在尋找更簡單的方法來解決這個問題,如果我有100個id,那麼我可能無法手工輸入所有內容來刪除它們。 – Douce