楼主: 920240553
3805 5

[问答] 菜鸟求助:判断两个变量值是否唯一匹配? [推广有奖]

  • 0关注
  • 1粉丝

SAS问鼎

已卖:61份资源

博士生

86%

还不是VIP/贵宾

-

威望
0
论坛币
1764 个
通用积分
4.2602
学术水平
9 点
热心指数
12 点
信用等级
3 点
经验
4853 点
帖子
129
精华
0
在线时间
419 小时
注册时间
2013-11-30
最后登录
2025-6-27

楼主
920240553 发表于 2014-11-6 16:12:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
判断两个变量值是否唯一匹配?
我有如下一组数据:
数据集a有20条观测,我想判断变量a与变量b的值是否唯一匹配,保留不唯一匹配的原始观测到一个新数据集b,如何写程序?
例如:变量a=1时,变量b的取值为1、2或3,这样就符合保留的条件;
变量a=2时,变量b的取值都为1,这样的观测就删掉,不保留在新数据集b中。
谢谢各位大神指教!!
  1. data a;
  2.         input a b c;
  3.         cards;
  4.         1        1        1
  5.         1        2        2
  6.         1        3        3
  7.         1        1        4
  8.         1        2        5
  9.         1        2        6
  10.         2        1        7
  11.         2        1        8
  12.         2        1        9
  13.         3        1        10
  14.         3        2        11
  15.         4        1        12
  16.         4        1        13
  17.         4        1        14
  18.         5        1        15
  19.         5        2        16
  20.         6        1        17
  21.         6        1        18
  22.         7        1        19
  23.         7        4        20
  24.         ;
  25. run;
复制代码
二维码

扫码加我 拉你入群

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

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

关键词:变量值 cards Input Data card 程序 如何

回帖推荐

wwang111 发表于2楼  查看完整内容

proc sql; create table b as select * from a group by a having count(distinct b)>1 order by a,c; quit;
唯SAS之鼎也!

沙发
wwang111 发表于 2014-11-6 16:30:45
proc sql;
create table b as
select * from a
group by a
having count(distinct b)>1
order by a,c;
quit;
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
李会超 + 36 + 1 + 1 有时候确实更喜欢写sql在sas里面
920240553 + 5 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 36  论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 1   查看全部评分

藤椅
920240553 发表于 2014-11-6 16:48:11
wwang111 发表于 2014-11-6 16:30
proc sql;
create table b as
select * from a
非常感谢你的帮助!
我为什么想不到用变量a分组再计算变量b值个数>1呢?
能说说你是怎么想到的呢?
我只想到用自连接加条件,可是不行,代码如下:
  1. proc sql noprint;
  2.         create table a1 as
  3.         select * from a as s1 , a as s2
  4.         where s1.a = s2.a and s1.b ^= s2.b
  5.         order by s1.a
  6.         ;
  7. quit;
复制代码

板凳
wwang111 发表于 2014-11-6 17:01:21
对于怎么想出来的,我实在不知道怎么回答

用连接我也没想出更好的方法,只能把上面的程序变复杂一点

proc sql noprint;
        create table a1(drop=a1) as
        select * from a as s1 ,(select distinct a as a1 from a group by a having count(distinct b)>1) as s2
        where s1.a = s2.a1
        order by s1.a
        ;
quit;

报纸
920240553 发表于 2014-11-6 17:09:28
wwang111 发表于 2014-11-6 17:01
对于怎么想出来的,我实在不知道怎么回答

用连接我也没想出更好的方法,只能把上面的程序变复杂一 ...
这个其实还没有跳出你那个思维,可能用连接做不出来吧,我是不会整了。
向你学习。。。以后多赐教。。。

地板
pobel 在职认证  发表于 2014-11-6 20:43:51
920240553 发表于 2014-11-6 16:48
非常感谢你的帮助!
我为什么想不到用变量a分组再计算变量b值个数>1呢?
能说说你是怎么想到的呢?
proc sql noprint;
        create table a1 as
        select distinct s1.* from a as s1 , a as s2
        where s1.a = s2.a and s1.b ^= s2.b
        order by c
        ;
quit;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 05:38