楼主: benny10
1524 7

[问答] 合并上的问题?? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

4%

还不是VIP/贵宾

-

威望
0
论坛币
114 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
2230 点
帖子
99
精华
0
在线时间
67 小时
注册时间
2007-6-23
最后登录
2020-3-25

楼主
benny10 发表于 2011-7-12 22:16:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位前辈,小弟遇到了一个数据整合上的困难,想来请教各位前辈!我现在有二个已知的档案,分别为档案A(数据笔数少)和档案B(数据笔数多),而我想将这两个档案合并,但因为两个档案中的时间不一致,导致合并出来的檔中存在许多空格。而现在小弟想把这些空格用现有的值补上去,但不知该如何进行,也请各位前辈帮个忙,提供一些方法给小弟我,以解决我的难题,谢谢各位!(我已经完成到流程2了,到我不知到流程3该怎么把空值补上,请各位前辈帮帮忙!)
流程如下:
流程1:
档案A
id date time bp1 bq1

AF 20050503  8450800 5800 4
AF 20050503  8451300 5801 36
AF 20050503  8451800 5805 12
AF 20050503  8451800 5805 12

档案B
id date time ep eq
AF 20050503 8450600 5800 1
AF 20050503 8450700 5801 3
AF 20050503 8450900 5803 7
AF 20050503 8450900 5804 1
AF 20050503 8451400 5805 12
AF 20050503 8451500 5805 2
AF 20050503 8451600 5805 1
AF 20050503 8451800 5807 1
AF 20050503 8451800 5807 1
流程2:合并
id date time bp1 bq1 id1 date1 ep1 eq1
AF 20050503 8450600 . . 5800 1   
AF 20050503 8450700 . . 5801 3
AF 20050503 8450800 5800 4 . .

AF 20050503 8450900 . . 5803 7
AF 20050503 8450900 . . 5804 1
AF 20050503 8451300 5801 36 . .

AF 20050503 8451400 . . 5805 12
AF 20050503 8451500 . . 5805 2
AF 20050503 8451600 . . 5805 1
AF 20050503 8451800 5805 12 5807 1
AF 20050503 8451800 5805 12 5807 1


流程3:将空格补上

id date time bp1 bq1 ep1 eq1
AF 20050503 8450800 5800 4 5800 1   
AF 20050503 8450800 5800 4 5801 3
AF 20050503 8450800 5800 4  . .
AF 20050503 8451300 5801 36  5803 7
AF 20050503 8451300 5801 36  5804 1
AF 20050503 8451300 5801 36 . .

AF 20050503 8451800 5805 12 5805 12
AF 20050503 8451800 5805 12 5805 2
AF 20050503 8451800 5805 12 5805 1
AF 20050503 8451800 5805 12 5807 1
AF 20050503 8451800 5805 12 5807 1


二维码

扫码加我 拉你入群

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

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

关键词:请教各位前辈 date time 数据整合 ATE 如何

沙发
honghejing 发表于 2011-7-12 22:23:22
把档案B的id1改成id,date1改成date,然后sort by id date time;
merge by id date time.

藤椅
benny10 发表于 2011-7-13 00:22:16
我已经完成到流程2了,到我不知到流程3该怎么把空值补上,请各位前辈帮帮忙!

板凳
ntsean 发表于 2011-7-13 09:26:11
用retain就可以了
LOCF( last observation carry forward)
已有 1 人评分热心指数 收起 理由
liuzhenzhu + 3 热心帮助其他会员

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

报纸
honghejing 发表于 2011-7-13 09:44:49
你这数据做的有问题,看上去没什么道理,如果合并时用的变量不同,你怎么会合并到流程二的数据?

地板
benny10 发表于 2011-7-13 11:06:58
5# honghejing

已更正数据,请各位前辈务必帮忙!

7
pobel 在职认证  发表于 2011-7-13 11:51:57
data test1;
  input id $ date $ time $ bp1 $ bq1;
  cards;
AF 20050503  8450800 5800 4
AF 20050503  8451300 5801 36
AF 20050503  8451800 5805 12
AF 20050503  8451800 5805 12
;

data test2;
      input id $ date $ time $ ep1 $ eq1;
          cards;
AF 20050503 8450600 5800 1
AF 20050503 8450700 5801 3
AF 20050503 8450900 5803 7
AF 20050503 8450900 5804 1
AF 20050503 8451400 5805 12
AF 20050503 8451500 5805 2
AF 20050503 8451600 5805 1
AF 20050503 8451800 5807 1
AF 20050503 8451800 5807 1
;

data test3;
     merge test1 test2;
         by id date time;
         order=_n_;
run;


proc sort data=test3;
     by id date descending order;
run;


data test4;
    set test3;
        by id date descending order;
        retain time1 bp2 bq2;
        if ^missing(bp1) then do;
           time1=time;
           bp2=bp1;
           bq2=bq1;
        end;
        else do;
           time=time1;
           bp1=bp2;
           bq1=bq2;
        end;
        drop time1 bp2 bq2 ;
run;

proc sort data=test4 out=wanted(drop=order) ;
   by order;
run;
已有 1 人评分学术水平 热心指数 收起 理由
benny10 + 1 + 1 精彩帖子

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

和谐拯救危机

8
benny10 发表于 2011-7-13 20:52:50
谢谢前辈的大力帮助,已成功完成程流程3了,非常感恩!

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

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