2016-04-20 77 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' –