楼主: 84562
1097 3

[问答] Merge问题,求高手指教,感激不尽!!!!! [推广有奖]

  • 0关注
  • 0粉丝

已卖:32份资源

本科生

27%

还不是VIP/贵宾

-

威望
0
论坛币
29 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1303 点
帖子
44
精华
0
在线时间
94 小时
注册时间
2011-1-16
最后登录
2021-5-23

楼主
84562 发表于 2013-12-5 01:25:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data1
iddatevalue

1

2000/12/3

1

2000/12/5

6

1

2000/12/8

7

2

2000/12/4

2

2000/12/6

2

3

2000/12/3

4

3

2000/12/7

5

3

2000/12/9

7


data2
iddate

1

2000/12/1

1

2000/12/2

1

2000/12/3

1

2000/12/4

1

2000/12/5

1

2000/12/6

1

2000/12/7

1

2000/12/8

1

2000/12/9

1

2000/12/10

2

2000/12/1

2

2000/12/2

2

2000/12/3

2

2000/12/4

2

2000/12/5

2

2000/12/6

2

2000/12/7

2

2000/12/8

2

2000/12/9

2

2000/12/10

3

2000/12/1

3

2000/12/2

3

2000/12/3

3

2000/12/4

3

2000/12/5

3

2000/12/6

3

2000/12/7

3

2000/12/8

3

2000/12/9

3

2000/12/10

    请问有没有办法合并出下面的结果,在第一项数值出现之前,value一项全部填零,在第一个数值出现之後,value一项一直填那个数字,直到更新为止。用merge, sql等什麽方法都没有所谓。感激不尽!!!!!


result
iddatevalue

1

2000/12/1

0

1

2000/12/2

0

1

2000/12/3

0

1

2000/12/4

0

1

2000/12/5

0

1

2000/12/6

6

1

2000/12/7

6

1

2000/12/8

7

1

2000/12/9

7

1

2000/12/10

7

2

2000/12/1

0

2

2000/12/2

0

2

2000/12/3

0

2

2000/12/4

0

2

2000/12/5

0

2

2000/12/6

2

2

2000/12/7

2

2

2000/12/8

2

2

2000/12/9

2

2

2000/12/10

2

3

2000/12/1

0

3

2000/12/2

0

3

2000/12/3

4

3

2000/12/4

4

3

2000/12/5

4

3

2000/12/6

4

3

2000/12/7

5

3

2000/12/8

5

3

2000/12/9

7

3

2000/12/10

7



二维码

扫码加我 拉你入群

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

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

关键词:Merge 感激不尽 求高手 Result value

沙发
pobel 在职认证  发表于 2013-12-5 08:40:17

data wanted;
    merge data1 data2;
        by id date;
        retain v;
        if first.id then v=value;
        if ^missing(value) then v=value;
        if missing(v) then v=0;
        drop value;
        rename v=value;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
84562 + 1 + 1 + 1 热心帮助其他会员

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

和谐拯救危机

藤椅
huntdreamer 发表于 2013-12-5 08:51:32
proc sql;
create table result as
select *
from data2 left join data1
on data1.id=data2.id
and data1.date=data2.data;
quit;
data reselt;
set reselt;
if  missing(value) then value=0;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
84562 + 1 + 1 + 1 热心帮助其他会员

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

板凳
yongyitian 发表于 2013-12-5 12:49:29
  1. data data3;
  2.     merge data1 data2;
  3.     by id date;
  4. run;


  5. data data4  (rename=(value1=value));
  6.     set data3;
  7.         by id ;
  8.         retain value1 temp 0;
  9.         lagvalue=lag(value);
  10.         if first.id and id = 1 then do;
  11.             value1 = 0;  temp = 0;  
  12.         end;
  13.         if id = 1 and lagvalue ^=. and temp=0 then do;
  14.           value1=lagvalue;
  15.           temp = 1;
  16.         end;
  17.         else if value^=. and temp=1  then value1= value;

  18.         if first.id and id ^= 1 then value1 = 0;
  19.         if id ^=1 and value ^= . then value1 = value;

  20.         drop value lagvalue temp;
  21. run;
复制代码
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
84562 + 1 + 1 + 1 热心帮助其他会员
webgu + 80 + 80 + 1 + 1 + 1 热心帮助其他会员

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

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

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