楼主: piggy_19840215
1730 6

[原创博文] 有关MODIFY的问题,总是不能得到想要的结果 [推广有奖]

  • 0关注
  • 1粉丝

VIP

本科生

5%

还不是VIP/贵宾

-

威望
0
论坛币
1714 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
782 点
帖子
57
精华
0
在线时间
82 小时
注册时间
2009-3-1
最后登录
2016-6-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请各位大侠帮忙看看。
想将master中,id=2、3、4的数据更新,log中显示已经更新,但实际结果没有。
十分感谢!!!

NOTE: There were 5 observations read from the data set WORK.TRANSACTION.
NOTE: The data set WORK.MASTER has been updated.  There were 3 observations rewritten, 2 observations added and 0
      observations deleted.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
  1. DATA master(index=(id));
  2.         INPUT id value;
  3. DATALINES;
  4. 1 10
  5. 2 20
  6. 3 30
  7. 4 40
  8. 5 50
  9. ;
  10. RUN;
  11. DATA transaction;
  12.         INPUT id value;
  13. DATALINES;
  14. 2 12
  15. 3 13
  16. 4 14
  17. 6 16
  18. 7 17
  19. ;
  20. RUN;

  21. data master;
  22.         set transaction;
  23.         modify master key=id;
  24.         select (_iorc_);
  25.                 when (%sysrc(_sok)) do;
  26.                         replace;
  27.                 end;
  28.                 when (%sysrc(_dsenom)) do;
  29.                         _error_=0;
  30.                         output;
  31.                 end;
  32.         end;
  33. run;
  34. proc print data=master;run;
复制代码
二维码

扫码加我 拉你入群

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

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

关键词:modify ODI Mod DIF observations

沙发
piggy_19840215 发表于 2012-7-26 15:03:24 |只看作者 |坛友微信交流群
自己先顶一下

使用道具

藤椅
chendonghui1987 发表于 2012-7-26 16:12:11 |只看作者 |坛友微信交流群
DATA master(index=(id));
        INPUT id value;
DATALINES;
1 10
2 20
3 30
4 40
5 50
;
RUN;
DATA transaction;
        INPUT id value;
DATALINES;
2 12
3 13
4 14
6 16
7 17
;
RUN;

data work.c;
        merge work.master work.transaction;
        by id;

run;
proc print;run;

使用道具

板凳
piggy_19840215 发表于 2012-7-26 18:14:26 |只看作者 |坛友微信交流群
chendonghui1987 发表于 2012-7-26 16:12
DATA master(index=(id));
        INPUT id value;
DATALINES;
非常谢谢 donghui, 不过我想问一下我的那段程序问题出在哪里了。

使用道具

报纸
piggy_19840215 发表于 2012-7-26 18:17:22 |只看作者 |坛友微信交流群
主要是MODIFY中是不是可以直接使用REPLACE。如果是,为什么结果没有更新。谢谢,请大侠指教。

使用道具

地板
piggy_19840215 发表于 2012-7-26 18:28:09 |只看作者 |坛友微信交流群
谢谢各位,特别是Mr.chendonghui1987。我知道应该如何在MODIFY中使用REPLACE了。程序修改如下。
  1. DATA master(index=(id));
  2.        INPUT id value;
  3.     DATALINES;
  4.     1 10
  5.     2 20
  6.     3 30
  7.     4 40
  8.     5 50
  9.     ;
  10.     RUN;
  11.     DATA transaction;
  12.        INPUT id newvalue;
  13.     DATALINES;
  14.     2 12
  15.     3 13
  16.     4 14
  17.     6 16
  18.     7 17
  19.     ;
  20.     RUN;

  21.     data master;
  22.        set transaction;
  23.        modify master key=id;
  24.        select (_iorc_);
  25.           when (%sysrc(_sok)) do;
  26.                            value=newvalue;
  27.                          replace;
  28.                   end;
  29.           when (%sysrc(_dsenom)) do;
  30.              _error_=0;
  31.                          value=newvalue;
  32.              output;
  33.           end;
  34.        end;
  35.     run;
  36.     proc print data=master;run;
复制代码

使用道具

7
chendonghui1987 发表于 2012-7-26 23:51:12 |只看作者 |坛友微信交流群
其实吧,多学点东西是好的,但是把简单的事情搞复杂了,就没必要了,找最简单的解决方法才是最好的

使用道具

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

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

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

GMT+8, 2024-4-28 20:23