首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS滴状克隆观测

SAS滴状克隆观测
EN

Stack Overflow用户
提问于 2014-11-21 22:13:29
回答 3查看 68关注 0票数 1

我有一个结构化的数据集,其中包含一个ID和另外两个变量。id不是唯一的,它在数据集中出现了1次以上(一个患者可以接受多个临床治疗).How只有当它是先前观察的完美克隆(基于另外两个变量值)时,我才能删除整个观察(整行)吗?我不想使用冗长的if语句。谢谢。

EN

回答 3

Stack Overflow用户

发布于 2014-11-21 22:42:49

代码语言:javascript
复制
proc sql;
select distinct * from olddata;
quit;

听起来像是一个简单的SQL修复。如果选择所有列,则“选择不同的”选项将删除数据集中所有完全重复的行。

票数 3
EN

Stack Overflow用户

发布于 2014-11-21 22:50:33

如果您特别想确定两个连续的行是否相同(但又不希望匹配由其他行分隔的相同行),则可以对by语句使用notsorted,然后对firstlast变量使用notsorted

代码语言:javascript
复制
data want;
  set have;
  by id var1 var2 notsorted;
  if first.var2;
run;

这将保留任何id/var1/var2相同的组的第一条记录,只要它们在数据集上是连续的。当然,如果您首先对dataset by id var1 var2进行排序,这将始终删除重复项,但不排序此操作仍然适用于删除并置的连续对(或更多)。

票数 0
EN

Stack Overflow用户

发布于 2014-11-22 00:00:01

我更喜欢@JJFord的答案,但是为了完整起见,这也可以使用proc sort中的nodupe选项来完成

代码语言:javascript
复制
proc sort data=mydata nodupe;
  by id;
run;

您选择什么作为by变量在这里并不重要。重要的一点是指定nodupe选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27063324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档