1

在 SAS Enterprise 中,我试图识别在 x 和 y 上具有相同值但在 z 上具有不同值的任何人(z 应该是相同的,但有些人的 z 值不止一个)。

做到这一点的一种方法是对 x、y、z 进行排序——但是任何人都可以建议一种方法来标记 x 和 y 中不同的 z 实例吗?

4

1 回答 1

0

我对您的要求并不完全清楚,一些示例数据将有助于使问题更清晰。但是,无论如何,我已经尝试回答。因此,假设您的输入表被调用my_table,以下代码将创建两个数据集,为您提供所需的结果。

/* 标记的表只包含那些具有不同 z 的 x,y 组 */
过程 sql;
  创建表标记为
  选择
  X,
  是的
  来自 my_table
  按 x,y 分组
  计数(不同的 z)> 1;
退出;

/* 将标记的表连接回原始表以获取 z 值 */
过程 sql;
  创建表 flagged_all 为
  选择
  外汇,
  飞,
  阿兹
  从
  my_table 作为
  内部联接
  标记为 f
  在斧头 = fx
  和 ay = fy;
退出;

编辑:或者您可以使用子选择来完成此操作:

过程 sql;
  创建表 flagged_all 为
  选择
  外汇,
  飞,
  阿兹
  从
  my_table 作为
  内部联接
  (选择
  X,
  是的
  来自 my_table
  按 x,y 分组
  计数(不同 z)> 1) f
  在斧头 = fx
  和 ay = fy;
退出;

但是,这会降低代码的可读性。要获得相同的功能,您可以将flagged第一个版本中的表格替换为视图 ( create view flagged as...)。

于 2014-06-05T13:55:25.713 回答