这里是我下面的数据结构:如何删除不需要的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