楼主: 楊中
3114 13

[问答] merge合并的问题(130401更新问题) [推广有奖]

11
yongyitian 发表于 2013-4-3 11:06:38
Imasasor 发表于 2013-4-2 23:57
Y大真是热心,水平又高啊
谢谢,版主鼓励+奖励

12
yongyitian 发表于 2013-4-3 11:07:59
蓝色 发表于 2013-4-3 01:31
stata合并数据更容易

clear
确实简单,很容易读懂

13
yongyitian 发表于 2013-4-3 11:11:08
楊中 发表于 2013-4-2 14:47
Y大,这次的想法我知道,不过又卡住了一个问题,
假使每笔 settmon都一样,我把B1的数据重新修改如下:
...
觉得你可能不想要两个不同的settmon值出现在同一行。那么你需要把 settmon 放在 by 语句中。但是你不可能再有两个 settmon 变量。 同时不再需要id变量。

试试这个.

Try this one, it is much simplier than before.

proc sort data=s0 out=s0_sort;    /* sort s0 by acno key and settmon */
   by acno key settmon;
run;
proc sort data=b1 out =b1_sort;   /* sort b1 by acno key and settmon */
   by acno key settmon;
run;

data s0b1_merge;      /* merge the s0_sort and b1_sort */
merge s0_sort b1_sort (rename = (date = date1  bs=bs1  os=os1
                       deal = deal1 price=price1 deal_qty = deal_qty1));  
by acno key settmon;
run;

proc print data=s0b1_merge; title 's0b1_merge'; run;

下面是结果
                                                                                         deal_
  Obs acno   date   key settmon deal bs os  price deal_qty  date1   deal1 bs1 os1 price1  qty1

    1   1  20000317  a  200004  1129 S   0 8680.0     5                 .      .      .    .
    2   1  20000317  a  200004  1129 S   0 8680.0     5                 .      .      .    .
    3   1  20000317  a  200004  1129 S   0 8680.0     5                 .      .      .    .
    4   1            a  200006     .     .     .      .    20000327  1132  B   1   9853    2
    5   1            a  200006     .     .     .      .    20000327  1132  B   1   9853    2
    6   1            a  200006     .     .     .      .    20000327  1137  B   1   9852    2
    7   1            a  200006     .     .     .      .    20000327  1137  B   1   9852    2
    8   1  20000317  a  200504  1131 S   0 8680.0     1                 .      .      .    .
    9   1  20000317  a  200504  1131 S   0 8680.0     1                 .      .      .    .
   10   1  20000317  a  200504  1131 S   0 8680.0     1                 .      .      .    .
   11   2  20000524  b  200006   906 S   0  462.0     5    20000529  1055  B   1    467    1
   12   2  20000524  b  200006   906 S   0  462.0     5    20000529  1055  B   1    467    1
   13   2  20000524  b  200006   906 S   0  462.0     5    20000529  1055  B   1    467    1
   14   2  20000524  b  200006   906 S   0  462.0     5    20000529  1055  B   1    467    3
   15   2  20000524  b  200006   906 S   0  462.0     5    20000529  1055  B   1    467    3
   16   2  20000524  b  200006   912 S   0  459.2     5    20000529  1055  B   1    467    3
   17   2  20000524  b  200006   912 S   0  459.2     5    20000529  1055  B   1    467    2
   18   2  20000524  b  200006   912 S   0  459.2     5    20000529  1055  B   1    467    2
   19   2  20000524  b  200006   912 S   0  459.2     5    20000529  1055  B   1    467    2
   20   2  20000524  b  200006   912 S   0  459.2     5    20000529  1055  B   1    467    2

By the way, if you don't want see the different date in the same line, as those of acno=2,
you can do it in the same way.
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
楊中 + 1 + 1 + 1 观点有启发

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

14
楊中 发表于 2013-4-6 17:43:11
yongyitian 发表于 2013-4-3 11:11
觉得你可能不想要两个不同的settmon值出现在同一行。那么你需要把 settmon 放在 by 语句中。但是你不可能 ...

谢谢Y~小弟后来终于写出来了~^0^

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

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