SAS中文论坛

标题: 请问如何将一个数据集中的一些不符合条件的数据删除? [打印本页]

作者: shiyiming    时间: 2004-8-16 23:07
标题: 请问如何将一个数据集中的一些不符合条件的数据删除?
有一个数据总集为data1,有另外一个数据集data2存放着一些数据,data2是data1的子集,现在想把data1中的属于data2部分的数据删除,该怎么做呢?另外,data1和data2中的每条数据均不是独一无二的,而有些可能有多条纪录的,但是他们有共同的id号,而日期不同。
请各位高手赐教。多谢!
作者: shiyiming    时间: 2004-8-17 09:28
标题: 估计要用宏
估计要用宏,能不能把问题写的具体些
作者: shiyiming    时间: 2004-8-17 11:57
标题: 可以使用sql来解决
可以使用sql来解决

proc sql;
delete from data1 a  
where a.* in (select * from data2);
quit;

不知道对不对,姑且试一试吧。
作者: shiyiming    时间: 2004-8-17 16:55
标题: 请教clong
你的程序可以解决上问题。我有另一个相关的问题:
有两数据集tem1:
id  dec
1    a
2    b
3    c
4   d

tem2:
id  rat
3   0.5
1   4.6
要将tem2中记录加入tem1中id相同的dec字段,变为数据集tem3:
id  rat  dec
3   0.5   c
1   4.6   a
(注意tem3中的id顺序与tem2相同)
我使用宏实现的(因为要保证tem2中的记录的顺序),不知直接用sql该如何实现?
作者: shiyiming    时间: 2004-8-17 17:25
标题: sas中的sql好像只可以做一对一的查询
我的数据集data1中每个id号都有几条纪录,因为是存放同个病人的不同天的病历纪录,而数据集data2中存放的是每个id号所对应的其他纪录,每个id都只有唯一纪录,且data2中的id是确诊患病的id,data1中的就是所有病人,包括确诊和未确诊的。我的目的是想要将data1中的未确诊的所有id及其纪录删除掉,我用过sql,但是好像只可以适用于data1中的每一个id无重复纪录的情况。

后来我想了一个很笨的方法,由于我有些是要求某个变量的均数(如体温),所以我先用class对id进行分类,求出每个id对应的多日体温均数,形成一个新的数据集data3,那么data3中的每一个id对应的体温纪录都是唯一的,这样我最后在做一次sql,就可以剔除掉其中的未确诊的,但是如果变量不是连续型,而是离散型,那我这种方法就不行了。

不知道大家有什么好办法呢?
作者: shiyiming    时间: 2004-8-18 18:41
标题:
proc sql;
create table c as
select l.*, r.data2的某个变量 as indicator/*做指示用*/ from a as l
left join b as r on l.varible=r.variable and .......;
data result;
set c;
where indicator=.;
run;
不知道行不行,试试吧
作者: shiyiming    时间: 2004-8-22 21:05
标题: 回复!
楼上的看起来挺复杂的,

proc sql;
create table term3 as
select term2.id, term2.rat,term1.dec from term1,term2
where term1.id=term2.id;

我试过了,应该问题!
作者: shiyiming    时间: 2004-8-24 14:20
标题: re:请问如何将一个数据集中的一些不符合条件的数据删除
proc sql;
create table tem1 as
select *
from tem1
where id not in (select distinct id from tem2);
quit;




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2