楼主: dollarkfl
1698 8

[问答] 怎样从不同的行中找出相同的数组,并只保留其中一个? [推广有奖]

  • 9关注
  • 0粉丝

大专生

8%

还不是VIP/贵宾

-

威望
0
论坛币
1016 个
通用积分
0.4500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
586 点
帖子
39
精华
0
在线时间
34 小时
注册时间
2014-1-4
最后登录
2024-1-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
麻烦各位大侠想想办法,怎样从不同的行中找出相同的数组,并只保留其中一个?
说明:这个数据集有4个变量,都是数值变量,现在想从中找出含相同数字组合的行(以行为单位,4个变量是一个整体),相同的行我已经用粗黑标出来了,这四个变量以行为单位,即使顺序不一致,也看成相同的组合
目标:如果我的数据量很大近万条(行),里面一定有相同的组合,我想删除多余的相同组合,遇到相同的只留一个
data a  ;
input no1 no2 no3 no4 ;
    cards ;
2   5   7   11
3   7  12   16
16  12  7   3
11  3   23  14
7   6   5   9
5   7   6   9
18  4   22  11
15  4   13   7
1   13   2   15
;
run;
二维码

扫码加我 拉你入群

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

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

关键词:cards Input 数值变量 Data card

沙发
dollarkfl 发表于 2014-3-21 18:57:52 |只看作者 |坛友微信交流群
人在江湖,扶弱济贫!!!

使用道具

藤椅
dollarkfl 发表于 2014-3-21 19:04:41 |只看作者 |坛友微信交流群
我也想过用sql中的distinct语句,可惜它只能处理一个变量,根本不能处理变量组合
proc sql;
       select distinct 变量名   from  数据集 ;
quit;

使用道具

这个可以么?我也想知道答案

使用道具

报纸
dollarkfl 发表于 2014-3-21 19:30:03 |只看作者 |坛友微信交流群
如果不是。。。 发表于 2014-3-21 19:09
这个可以么?我也想知道答案
这个当然不可以的,我试过了

使用道具

地板
vividboy 发表于 2014-3-21 22:49:16 |只看作者 |坛友微信交流群
我的思路是:排序后,再比较。不知道,行不行。
Welcome to the real world, it sucks! You gonna love it:)

使用道具

7
dollarkfl 发表于 2014-3-21 23:28:44 |只看作者 |坛友微信交流群
vividboy 发表于 2014-3-21 22:49
我的思路是:排序后,再比较。不知道,行不行。
排序可以的,把相同的放到一起,但缺没法筛查出来,当数据量很大的时候手动删除是不现实的

使用道具

8
farmman60 发表于 2014-3-21 23:33:16 |只看作者 |坛友微信交流群
data a  ;
input  no1 no2 no3 no4 ;
cards ;
2   5   7   11
3   7  12   16
16  12  7   3
11  3   23  14
7   6   5   9
5   7   6   9
18  4   22  11
15  4   13   7
1   13   2   15
;
run;

data a;
set a;
id+1;
run;

data b;
  set a;
  array var1 no:;
  call sortn (of var1(*));
   do _p=1 to n;
    set a (rename=(id=_id no1=_no1 no2=_no2 no3=_no3 no4=_no4)) point=_p nobs=n;
        array var2 _no:;
        if  _p>_n_ then do;
    call sortn (of var2(*));
    if cats(of var1(*))=cats(of var2(*)) then flag=1;
        else flag=0;
        if flag=1 then output;       
        end;
        end;
        drop _: n:;
        run;

data want;
  merge a(in=one) b(in=two keep=id);
  by id;
  if not two;
  drop id;
  run;

使用道具

9
dollarkfl 发表于 2014-3-21 23:47:03 |只看作者 |坛友微信交流群
farmman60 发表于 2014-3-21 23:33
data a  ;
input  no1 no2 no3 no4 ;
cards ;
你说我怎么说你好呢!!!
干脆让俺膜拜一下吧

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 13:56