楼主: 等风来撒
1589 7

请问如何按照时间来合并数据 [推广有奖]

  • 0关注
  • 0粉丝

博士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
500 个
通用积分
35.5521
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
2497 点
帖子
220
精华
0
在线时间
232 小时
注册时间
2014-1-5
最后登录
2023-10-30

5论坛币
有如下数据集a

time                            value1
20010101                      1
20010102                      2
20010103                      3
20010104                      4

数据集b

time                              value2
20010101                        11
20010103                        22
20010104                        33
20010105                        44

两个数据集合并成

time                              value1         value2
20010101                        1                11
20010102                        2                 0
20010103                        3                22
20010104                        4                33
20010105                        0                44

就是按时间合并,如果空的话就用0填充,请问怎么弄啊,求高手??

最佳答案

iljasminetea 查看完整内容

可以的,如果是B:D,并且你想要的value3在第三列的话(从B列到D列的第3列),把公式里的 B:C,2 改成B:D,3 简单地说,你想要的数据在第几列,就改成几。 或者搜索一下excel里VLOOKUP函数的说明吧
关键词:合并数据 value alue time IME 如何
这个...........
沙发
iljasminetea 发表于 2015-6-30 16:06:16 |只看作者 |坛友微信交流群
等风来撒 发表于 2015-6-30 16:50
我想问下那个B:C的问题,如果我value1后面还有value3,也就是D列还有数据,那么可以B:D这样吗?但我试这样不行 ...
可以的,如果是B:D,并且你想要的value3在第三列的话(从B列到D列的第3列),把公式里的 B:C,2 改成B:D,3
简单地说,你想要的数据在第几列,就改成几。
或者搜索一下excel里VLOOKUP函数的说明吧

使用道具

藤椅
iljasminetea 发表于 2015-6-30 16:29:38 |只看作者 |坛友微信交流群
Step 1:
如附件pic1,将两组数据分别输入B,C,E,F列。

Step2:
两组数据的time列复制到同一列里,然后使用excel的重复数据删除功能,如附件pic1的I列。然后在J列和K列里输入附件pic1显示的公式。

Step 3:
上述J,K列的公式的结果如附件pic2的J,L列。选中I,J,K列,然后用选择性粘贴,只复制数值,如pic2的N到P列。

Step 4:
选中O和P列,用搜索与替换功能,将#N/A全部替换成0,如pic2的R到T列,你想要的格式。
完成。

使用道具

板凳
iljasminetea 发表于 2015-6-30 16:31:22 |只看作者 |坛友微信交流群
忘了附件了,补发。

pic1.jpg (55.52 KB)

需要: 5 个论坛币  [购买]

pic2.jpg (38.97 KB)

pic2.jpg

使用道具

报纸
苹果叶 在职认证  发表于 2015-6-30 16:44:51 |只看作者 |坛友微信交流群
  1. data a;
  2. input timea yymmdd10.                           value1;
  3. cards;
  4. 20010101                      1
  5. 20010102                      2
  6. 20010103                      3
  7. 20010104                      4
  8. ;
  9. data b;
  10. input timeb yymmdd10.                           value2;
  11. cards;
  12. 20010101                        11
  13. 20010103                        22
  14. 20010104                        33
  15. 20010105                        44
  16. ;
  17. run;

  18. proc sql;
  19.   create table final(drop=timea timeb) as
  20.     select coalesce(timea, timeb) as time format=yymmdd10., * from a full join b on a.timea=b.timeb order by calculated time;
  21. quit;

  22. data final;
  23.   set final;
  24.   array value value1-value2;
  25.   do over value;
  26.     value=ifn(value=., 0, value);
  27.   end;
  28. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
teqel + 2 + 2 + 2 精彩帖子

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

使用道具

地板
等风来撒 发表于 2015-6-30 16:50:17 |只看作者 |坛友微信交流群
iljasminetea 发表于 2015-6-30 16:31
忘了附件了,补发。
我想问下那个B:C的问题,如果我value1后面还有value3,也就是D列还有数据,那么可以B:D这样吗?但我试这样不行啊

使用道具

7
wsddzr 发表于 2015-6-30 17:46:32 |只看作者 |坛友微信交流群
等风来撒 发表于 2015-6-30 16:50
我想问下那个B:C的问题,如果我value1后面还有value3,也就是D列还有数据,那么可以B:D这样吗?但我试这样不行 ...
不知道这个笨办法可以不
  1. data final;
  2. set final;
  3. if value1 =. then value1=0;
  4. if value2 =. then value2=0;
  5. if value3 =. then value3=0;
  6. run;
复制代码

使用道具

8
eflucy 发表于 2015-7-10 16:42:47 |只看作者 |坛友微信交流群
proc sort data=a;
  by time;
run;
proc sort data=b;
  by time;
run;
data want;
merge a (in=a)
          b (in=b);
by time;
if 1-a then value1=0;
if 1-b then value2=0;
run;

使用道具

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

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

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

GMT+8, 2024-4-26 20:56