楼主: liuliuqiu
1174 6

[问答] 求教SAS程序 [推广有奖]

  • 6关注
  • 2粉丝

已卖:35份资源

副教授

64%

还不是VIP/贵宾

-

威望
0
论坛币
2239 个
通用积分
8.1161
学术水平
3 点
热心指数
5 点
信用等级
5 点
经验
14393 点
帖子
429
精华
0
在线时间
1129 小时
注册时间
2009-3-24
最后登录
2025-12-11

楼主
liuliuqiu 发表于 2014-2-21 20:45:49 |AI写论文
5论坛币
本人用SAS处理海量数据,但遇到个问题,不知怎么写程序:
      假设表a中有两列数据A,B,想看看B列中每一个数据是否在A列中出现过。
本想用Excel表中ifcountifbba1),"包含""不包含")函数求解,但是因为数据量过大,Excel运行实在是慢。所以恳请SAS高手帮忙解答,万分感谢。

最佳答案

bridge1989 查看完整内容

结果就是 n 3 33 也就是b中出现但a中没有出现的
关键词:sas程序 COUNTIF 用excel Excel表 EXCEL 程序

沙发
bridge1989 发表于 2014-2-21 20:45:50
  1. data a ;
  2. input m n;
  3. cards;
  4. 1 2
  5. 2 3
  6. 11 22
  7. 22 33
  8. ;
  9. run;
  10. proc sql;
  11. create table work.b as
  12. select m from work.a
  13. except
  14. select n from work.a
  15. ;
  16. quit;
  17. proc sql;
  18. create table work.c as
  19. select m from work.a
  20. except
  21. select m from work.b
  22. ;
  23. quit;
  24. proc sql;
  25. create table work.d as
  26. select n from work.a
  27. except
  28. select m from work.c;
  29. quit;
复制代码
结果就是 n
               3                         33
也就是b中出现但a中没有出现的


藤椅
liuliuqiu 发表于 2014-2-21 22:07:34 来自手机
大家帮帮忙吧,着急呀

板凳
mingfeng07 学生认证  发表于 2014-2-21 22:55:58
proc sql;
select b.B from (select B from data) as b except all select a.A from (select A from data) as a;
quit;
运行后看结果,如果是空的则说明都出现了,如果有数据出现,那么出现的那些数据就是B列未在A列中出现的
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

报纸
苹果叶 在职认证  发表于 2014-2-23 13:36:21
读出A列中的值,再读出B列的值,然后两个merge,应该可以了

地板
liuliuqiu 发表于 2014-2-24 12:05:53
bridge1989 发表于 2014-2-21 20:45
结果就是 n
               3                         33
也就是b中出现但a中没有出现的
非常感谢您的帮助!
还有一个问题想请教,对于上面的问题得出d表中的值包含在a表中n数据里,其实,与n相对应的还有其他变量,比如X Y,要应用怎么的程序把d表中也显示对应的xy值呢?谢谢!

7
bridge1989 发表于 2014-3-11 16:36:31
建议查看proc sql 中的union intersect except的详细用法

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

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