You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAS Enterprise Guide中筛选各列均重复的行?

在SAS Enterprise Guide或PROC SQL中筛选全列重复的行

方法一:PROC SQL实现

通过分组统计找出重复的列组合,再关联原表提取所有对应行:

PROC SQL;
    CREATE TABLE duplicated_rows AS
    SELECT a.*
    FROM your_table a
    INNER JOIN (
        -- 先找出所有出现次数≥2的列组合
        SELECT COL1, COL2, COL3
        FROM your_table
        GROUP BY COL1, COL2, COL3
        HAVING COUNT(*) >= 2
    ) b
    ON a.COL1 = b.COL1 AND a.COL2 = b.COL2 AND a.COL3 = b.COL3;
QUIT;

把代码里的your_table替换成你实际的表名即可,执行后duplicated_rows就是目标结果。

方法二:SAS数据步+PROC SORT(适合SAS EG可视化操作)

如果习惯用可视化步骤,也可以用排序加数据步的方式:

  1. 先对数据按所有列排序:
PROC SORT DATA=your_table OUT=sorted_data;
    BY COL1 COL2 COL3;
RUN;
  1. 筛选出重复组的所有行:
DATA duplicated_rows;
    SET sorted_data;
    BY COL1 COL2 COL3;
    -- 只要不是组内唯一行,就保留
    IF FIRST.COL3 = 0 OR LAST.COL3 = 0;
RUN;

这里利用BY组的FIRST.和LAST.标记,判断当前行是否属于有重复的分组,从而保留所有重复的行。

另外如果只想快速提取重复的行(不含第一次出现的),可以用PROC SORT的DUPOUT参数:

PROC SORT DATA=your_table OUT=keep_unique DUPOUT=duplicates;
    BY COL1 COL2 COL3;
RUN;

此时duplicates表会输出所有重复的行,但如果某组合出现多次,只会保留除第一次外的行,可根据需求选择。

内容的提问来源于stack exchange,提问作者dingaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:57:42