SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 823|回复: 7
打印 上一主题 下一主题

请问如何将一个数据集中的一些不符合条件的数据删除?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-8-16 23:07:23 | 只看该作者

请问如何将一个数据集中的一些不符合条件的数据删除?

有一个数据总集为data1,有另外一个数据集data2存放着一些数据,data2是data1的子集,现在想把data1中的属于data2部分的数据删除,该怎么做呢?另外,data1和data2中的每条数据均不是独一无二的,而有些可能有多条纪录的,但是他们有共同的id号,而日期不同。
请各位高手赐教。多谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-8-17 09:28:01 | 只看该作者

估计要用宏

估计要用宏,能不能把问题写的具体些
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-8-17 11:57:42 | 只看该作者

可以使用sql来解决

可以使用sql来解决

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

不知道对不对,姑且试一试吧。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-8-17 16:55:17 | 只看该作者

请教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该如何实现?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-8-17 17:25:14 | 只看该作者

sas中的sql好像只可以做一对一的查询

我的数据集data1中每个id号都有几条纪录,因为是存放同个病人的不同天的病历纪录,而数据集data2中存放的是每个id号所对应的其他纪录,每个id都只有唯一纪录,且data2中的id是确诊患病的id,data1中的就是所有病人,包括确诊和未确诊的。我的目的是想要将data1中的未确诊的所有id及其纪录删除掉,我用过sql,但是好像只可以适用于data1中的每一个id无重复纪录的情况。

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

不知道大家有什么好办法呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-8-18 18:41:53 | 只看该作者

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;
不知道行不行,试试吧
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2004-8-22 21:05:13 | 只看该作者

回复!

楼上的看起来挺复杂的,

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

我试过了,应该问题!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2004-8-24 14:20:23 | 只看该作者

re:请问如何将一个数据集中的一些不符合条件的数据删除

proc sql;
create table tem1 as
select *
from tem1
where id not in (select distinct id from tem2);
quit;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-10 20:15 , Processed in 0.196015 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表