首页 > 解决方案 > 根据条件删除行

问题描述

我想根据某些条件删除 SAS 中的行(或观察):如果名称列中的第 i 个名称与第 (i+1) 个名称相同,并且第 i 个日期与 ( i+1)-th 日期,删除第 (i+1)-th 行。如果这些列中的条目与第 i 行中的条目相同,我还想删除第 i+2、i+3 行等。但是,如果前面的行被删除,这可能会迭代地完成。

我对SAS相当陌生。我知道我应该使用某种形式的循环,但我不知道如何使用它。这个问题困扰了我几天。我希望有人可以帮助我。

标签: sas

解决方案


BY这是一个可以使用语句和自动FIRST.按组变量标志来解决的处理任务。

data want;
  set have;
  by date name;
  if first.name;
run;

如果按组行是连续的但未排序,则可以将NOTSORTED选项添加到BY语句中。

如果实际数据结构具有进一步分组 name:dates 的附加“父”分类变量(例如,说insuranceCompanypolicyGroup,或team),您将需要在 by-group 语句中使用附加变量。


推荐阅读