在 SAS Enterprise 中,我试图识别在 x 和 y 上具有相同值但在 z 上具有不同值的任何人(z 应该是相同的,但有些人的 z 值不止一个)。
做到这一点的一种方法是对 x、y、z 进行排序——但是任何人都可以建议一种方法来标记 x 和 y 中不同的 z 实例吗?
在 SAS Enterprise 中,我试图识别在 x 和 y 上具有相同值但在 z 上具有不同值的任何人(z 应该是相同的,但有些人的 z 值不止一个)。
做到这一点的一种方法是对 x、y、z 进行排序——但是任何人都可以建议一种方法来标记 x 和 y 中不同的 z 实例吗?
我对您的要求并不完全清楚,一些示例数据将有助于使问题更清晰。但是,无论如何,我已经尝试回答。因此,假设您的输入表被调用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...
)。