楼主: kuaijimxz
10072 18

[数据管理求助] 求助 一个 merge的问题。 [推广有奖]

  • 0关注
  • 0粉丝

svip3

本科生

11%

(VIP/贵宾)五级

84%

威望
0
论坛币
70299 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
3 点
经验
593 点
帖子
56
精华
0
在线时间
57 小时
注册时间
2009-4-19
最后登录
2023-11-13

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好。我想把文件 abc和文件def合并成文件m,请问 merge 命令应该怎么写。谢谢
abc文件
stkcd  year  debt ratio
00001  1997 0.3  0.2
00001  1998  0.2 0.3
00002  1997 0.1  0.3
00002   1998  0.2  0.3
def文件
stkcd  year     size
00001  1997    3
00001  1998    4
00002   1997   5
00002   1997   3
文件m
stkcd  year  debt ratio  size
00001  1997 0.3  0.2    3
00001  1998  0.2 0.3   4
00002   1997 0.1  0.3  5
00002   1998  0.2  0.3  3


我用的是stata11的版本。



二维码

扫码加我 拉你入群

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

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

关键词:Merge Stata11 stkcd ratio Stata

本帖被以下文库推荐

沙发
Kìss;敏 发表于 2012-10-31 20:10:45 |只看作者 |坛友微信交流群

使用道具

藤椅
davil2000 发表于 2012-10-31 20:17:17 |只看作者 |坛友微信交流群
proc sort data=data1;
by stkcd year;
run;

proc sort data=data2;
by stkcd year;
run;

data  data12;
merge data1 data2;
by stkcd year;
run;
R是万能的,SAS是不可战胜的!

使用道具

板凳
davil2000 发表于 2012-10-31 20:19:16 |只看作者 |坛友微信交流群
抱歉 以上是SAS写的代码
R是万能的,SAS是不可战胜的!

使用道具

报纸
ywh19860616 发表于 2012-10-31 20:23:54 |只看作者 |坛友微信交流群
数据保存为data1.dta和data2.dta

use data2
merge m:m stkcd using data1

已有 1 人评分论坛币 学术水平 热心指数 收起 理由
crystal8832 + 10 + 1 + 1 热心帮助其他会员

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

一份耕耘,一份收获。

使用道具

地板
lzccjgh 发表于 2012-10-31 20:24:28 来自手机 |只看作者 |坛友微信交流群
直接merge id year应该就可以了

使用道具

7
kuaijimxz 发表于 2012-10-31 20:52:50 |只看作者 |坛友微信交流群
谢谢各位。直接merge 总是出现说: you are using old merge syntax; see [R] merge for new syntax.

仔细的研究了新的syntax,但是没有分清楚所谓的1:1 merge和m:m merge。用我上面的例子,得出的结果是一样的。
命令如下
1:1 merge 命令如下:
use “d:\abc.dta”,clear  (abc和def文件都是直接放在d盘下的)
merge 1:1 stkcd year using “d:\def.dta”

m:m merge 命令如下
use “d:\abc.dta”,clear  (abc和def文件都是直接放在d盘下的)
merge m:m stkcd year using “d:\def.dta”

所以想请问各位大侠,这里面的1:1 和m:m 到底有什么不同呢?这里的1或者m是指合并前的key varaibles
的个数吗?十分疑惑,请指教。





使用道具

8
ywh19860616 发表于 2012-10-31 21:05:57 |只看作者 |坛友微信交流群
kuaijimxz 发表于 2012-10-31 20:52
谢谢各位。直接merge 总是出现说: you are using old merge syntax; see [R] merge for new syntax.

仔 ...
请参见5楼。
一份耕耘,一份收获。

使用道具

9
大白菜2012 发表于 2012-11-1 08:26:16 |只看作者 |坛友微信交流群
kuaijimxz 发表于 2012-10-31 20:52
谢谢各位。直接merge 总是出现说: you are using old merge syntax; see [R] merge for new syntax.

仔 ...
在各个数据包里,分别用duplicates r stkcd year 来检查下(stkcd year)是不是代表了一个唯一的ID。若是,则用1;不是,则m



元芳,侬怎么L00K?

使用道具

10
蓝色 发表于 2012-11-1 12:23:08 |只看作者 |坛友微信交流群
比如:A、b,C三个数据集;
A与B合并当然是1:1了,按照hhid pid 相同的合并,每个人对应自己的收入水平
A与C合并,就是M:1,按照hhid相同的合并啊,a中同一户的人都对应同样的一个面积
反过来:C与A合并,就是1:M,因为1个户代码对应多个

 

A

户代码

个人代码

性别

hhid

pid

gender

1

1

1

1

2

2

1

3

3

2

1

1

2

2

2

2

3

1

2

4

2

B
户代码

个人代码

收入水平

hhid

pid

income

1

1

5000

1

2

4000

1

3

8000

2

1

3000

2

2

5000

2

3

2000

2

4

4000


 

C

户代码

宅基地面积

hhid

haouse_area

1

200

2

150



使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

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

GMT+8, 2024-5-3 19:46