全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1581 2
2015-02-06
我有一个数据集 变量是var1 - varn
我想把同一个观测里面的重复的值找出来, 输出到一个新的数据集,
比如:
                id                var1          var2            var3              var4              var5               var6
obs1         1                 3               1                 2                    1                  .                      .
obs2         2                 2              2                 2                    3                   5                   6


obs1   里面的var2和var4值相等,  所以需要把其中一个, 比方说var4的那个1取出来放入新的数据集,  老数据集的var4就变成 "."
obs2   里面要把var2和var3的2取出来放入新的数据集,  老数据集的var2和var3就变成 "."

只比较同一行里面的重复值, 不同的obs之间不比较.
同一行里面只比较var1-varn,  id不参与比较.
取出来的重复值最好带着本行(obs)的id写入新的数据集.


求解.   非常感谢~



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-2-6 15:34:34
不知道下面的程序是否符合你要去

data exdata;
        input x1-x6;
        cards;
        1 2 3 4 2 4
        5 6 4 3 2 1
        3 4 5 4 3 2
        1 2 3 4 2 1
        ;
run;


data out1(keep = x:) out2(keep = obs y: where = (obs ^= .));
        set exdata;
        array varlst1(6) x1 - x6;
        array varlst2(6) y1 - y6;

        do i = 2 to 6;
          do j = 1 to i - 1;
             if varlst1(i) = varlst1(j) then do;
                    varlst2(i) = varlst1(i);
                        obs = _N_;
                 end;
          end;
        end;

        do k = 1 to 6;
           if ^missing(varlst2(k)) then varlst1(k) = .;
        end;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-9 08:12:30
wpfwxn,

你好. 非常感谢.  基本是我想要的, 我尝试修改没能弄成,  我是个小菜鸟, 对某些结构和原理不是很理解,
能不能麻烦你帮我做些小修改.

我把数据做了点小改动:

data exdata;
        input x1-x7;
        cards;
        15 1 2 3 4 2 4
        16 5 6 4 3 2 1
        17 3 4 5 4 3 2
        18 1 2 3 .  .  .
        ;
run;

1. x1不参与比较. 还有就是最后一行的三个缺失值不算, 不需要输出重复的两个缺失值到out2中
2. out2中第一个变量名是y1, 记录出现重复值的行对应的x1的值(也就是15和17). obs就不再输出到out2了.
然后记录重复值的变量名是y2-y7

能麻烦你帮我完善一下吗?    非常感谢.


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群