楼主: elek.me
7151 27

[技术讨论与投票] 根据要求查找缺失值 [推广有奖]

21
elek.me 发表于 2011-1-10 16:43:06
yatming 发表于 2011-1-10 14:57
11# elek.me
是三楼,三楼是我发小。哈哈

其实sql 效率未必慢,只是sas没有提供可读性较强的option,而现在的option要对sql机制相当了解的情况下可调,其运算效率不下data 步,甚至几倍快于。
就如一个单单的join,其实内部机制是优化器可选择四种查询算法:merge join,index join,hash join,还有就是traversal。不过sql不是sas的重点,不奇怪。
呵呵。 发小啊。 那不容易。
我的发小,现在都在搞跟我完全不一样的东西。
关于sql与data步甚至一些proc步,比如means,他们之间的效率,很多人都在讨论,一直也没有绝对的结论。
sql在查询方面,肯定是有其优势。不过事情都有两面性,不可能哪方面都是最好的。
这两个东西,与个人喜爱也有关系,不过sas语言的灵活性,可以让用户有更多的选择,这是好事情,用哪个方便就用哪个咯。
我的博客: http://elek.me/sas
联系我: http://about.me/elek

22
hopewell 发表于 2011-1-11 00:53:42
起个哄, 胖子的新图片确实没以前那么杀了
  1. data data1;
  2.     input no x0 y0 $ a0 ab x1 x2 $ x3;
  3. cards;
  4. 1 1 A 1 1 2 A 2
  5. 2 . . . . 1 B 1
  6. 3 1 C 3 4 . . .
  7. 4 . . 2 3 3 D .
  8. ;
  9. data data2;
  10.     retain fmtname 'visit' type 'i';
  11.     input start $ label;
  12.     start=upcase(start);
  13. cards;
  14. x0 1
  15. y0 1
  16. a0 1
  17. ab 1
  18. x1 2
  19. x2 2
  20. x3 2
  21. ;
  22. proc format cntlin=data2; run;
  23. data out(index=(group=(no visit)));
  24.     set data1;
  25.     array _char(i) $20 _character_;
  26.     array _num(i) _numeric_;
  27.     do over _char;
  28.         variable=vname(_char);
  29.         label=vlabel(_char);
  30.         value=strip(_char);
  31.         visit=input(upcase(variable),visit.);
  32.         output;
  33.     end;
  34.     do over _num;
  35.         variable=vname(_num);
  36.         label=vlabel(_num);
  37.         value=strip(vvalue(_num));
  38.         if upcase(variable) not in('NO','I') then do;
  39.             visit=input(upcase(variable),visit.);
  40.             output;
  41.         end;
  42.     end;
  43. run;
  44. data out(keep=no variable label value);
  45.     flag=0;
  46.     do _n_=1 by 1 until(last.visit);
  47.         set out;
  48.         by no visit;
  49.         if value in('.','') then flag+1;
  50.     end;
  51.     flag=ifn(flag=_n_,0,1);
  52.     do _n_=1 to _n_;
  53.         set out;
  54.         by no visit;
  55.         if flag and value in('.','') then output;
  56.     end;
  57. run;
复制代码
观钓颇逾垂钓趣 种花何问看花谁

23
abc7759abc 发表于 2011-1-11 07:32:21
这是什么东东?
历史是个什么玩意儿~

24
论坛数据分析 发表于 2011-1-11 09:29:04
三楼开始没有认出来
原来的头像比较给力
老夫聊发少年狂

25
convidence 发表于 2011-1-11 10:52:08
看不懂啊,这是什么?

26
gongmoheng 发表于 2011-1-11 14:37:26
哎 学了SQL 都忘记了

27
shenliang_111 发表于 2011-6-23 10:04:50
学习一下......

28
leedx 发表于 2011-6-23 23:24:54
好多好程序,之前也遇到相似的问题~学习了很多,谢谢各位大牛们~~~

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

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