楼主: tj0412ymy
1846 7

[原创博文] 在DADA步或SQL步中匹配2张表并做标记 [推广有奖]

  • 2关注
  • 48粉丝

已卖:4314份资源

副教授

65%

还不是VIP/贵宾

-

威望
0
论坛币
11512 个
通用积分
12.7575
学术水平
72 点
热心指数
91 点
信用等级
64 点
经验
29292 点
帖子
545
精华
0
在线时间
1203 小时
注册时间
2009-3-10
最后登录
2024-2-15

楼主
tj0412ymy 发表于 2012-5-10 15:07:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

A表

B表

A

J

D

B

K

D

J

Y

W

O

B

W

L


对于A表和B表,如果B表中的值也在A表的话,就标记为1,否则为0. 期望得到的表如下:
A

0

D

1

K

0

J

1

Y

0

W

0

O

0

B

1

W

0

L

0


要求:在DATA或SQL步中,一步完成上述操作(除了创建数据集的2个DATA步)。
二维码

扫码加我 拉你入群

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

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

关键词:Dad sql data步 Data 数据集

沙发
webgu 发表于 2012-5-10 15:46:23
  1. data a;
  2. input id $;
  3. datalines;
  4. A
  5. D
  6. K
  7. J
  8. Y
  9. W
  10. O
  11. B
  12. W
  13. L
  14. ;

  15. data b;
  16. input id $;
  17. datalines;
  18. J
  19. B
  20. D
  21. ;

  22. data c (drop=rc);
  23.   if _n_=1 then do;
  24.      set b ;
  25.          declare hash ht(dataset:"b") ;
  26.            ht.definekey("id") ;
  27.            ht.definedone();
  28.         end;
  29. set a;
  30. rc= ht.find(key:id);
  31. if (rc=0) then mark=1; else mark=0;
  32. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
tj0412ymy + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

藤椅
chendonghui1987 发表于 2012-5-10 17:33:16
data a;
input id $;
datalines;
A
D
K
J
Y
W
O
B
W
L
;
run;

data b;
input id $;
datalines;
J
B
D
;
run;

proc sql noprint;
        create table work.c as
                select a.id,b.id as i
                from work.a as a left join work.b as b
                on a.id = b.id;
quit;

data work.d(drop = i);
        set work.c;
        if not missing(i) then do;
                flag = 1;
        end;else do;
                flag = 0;
        end;
run;
已有 1 人评分热心指数 收起 理由
tj0412ymy + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

板凳
pl172231 发表于 2012-5-10 19:24:57
proc sql;
alter table aa add (x numeric);
update table aa set  x=1 where a in (select b from bb) , set x=0 where a not in (select b from bb);
quit;

报纸
tj0412ymy 发表于 2012-5-10 22:08:23
楼上的程序有些问题,帮忙做个更正:
  1. proc sql;
  2. alter table aa add x numeric;
  3. update  aa set  x=1 where ID in (select ID from bb);
  4. update  aa set x=0 where ID not in (select ID from bb);
  5. quit;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

地板
nernernini 发表于 2012-5-10 23:19:17
thanks, good to learn.

7
xsfh3000 发表于 2012-5-12 22:04:53
学习学习。。。

8
goldbaodi 发表于 2012-5-13 12:36:34
学习学习。。。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 05:42