楼主: lemonxinran
9699 5

stata中可以生成矩阵吗 [推广有奖]

  • 0关注
  • 1粉丝

已卖:2份资源

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
1155 个
通用积分
6.0000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
10334 点
帖子
188
精华
0
在线时间
605 小时
注册时间
2010-10-25
最后登录
2025-4-2

楼主
lemonxinran 发表于 2012-12-8 21:58:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有两组数据,一组如下:
tran_id year  buyername
1          2000    a
1          2000    b
2          2000    c
2          2000    d
。。。。。。
另一组如下:
tran_id   year   sellername
1          2000      e
1          2000      f
1          2000      g
2          2000      h
2          2000      i
。。。。。。
现在需要根据tran_id将数据合并,包括tran_id, year, buyername, sellername, 第一个表中的每一条记录都要和第二个表中的tran_id相同的所有记录对应,也就是说,tran_id=1时,应生成2*3条记录,tran_id=2时,应生成2*2条记录。由于两个表中tran_id 都不是唯一的,stata可以实现这样的操作吗?求大侠指导。
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata buyer name year 矩阵

沙发
大白菜2012 发表于 2012-12-8 23:18:09
merge m:m tran_id year using
元芳,侬怎么L00K?

藤椅
fgleric 发表于 2012-12-9 01:42:28
大白菜2012 发表于 2012-12-8 23:18
merge m:m tran_id year using
~~这种情况我都要用joinby

如果使用m:m的话,是不是只会保留1个观察值?我不sure啊
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
h3327156 + 3 + 3 + 3 热心帮助其他会员

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

板凳
大白菜2012 发表于 2012-12-9 03:00:50
fgleric 发表于 2012-12-9 01:42
~~这种情况我都要用joinby

如果使用m:m的话,是不是只会保留1个观察值?我不sure啊
you are right.

joinby is better
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
h3327156 + 3 + 3 + 3 热心帮助其他会员

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

元芳,侬怎么L00K?

报纸
h3327156 发表于 2012-12-9 03:16:48
楼主何不进行演练?
进行演练可以得到更多直觉上的感觉。

inp tran_id year str10 buyername
1 2000 a
1 2000 b
2 2000 c
2 2000 d
3 2000 j
end
sa "D:\data_b"

clear
inp tran_id year str10 buyername
1 2000 a
1 2000 b
2 2000 c
2 2000 d
end
sa "D:\data_b2"

clear
inp tran_id year str10 sellername
1 2000 e
1 2000 f
1 2000 g
2 2000 h
2 2000 i
end
sa "D:\data_s"

*上例只有一个观测值与您的举例不一样,指data_b,然data_b2是一样,
*注意,如果您tran_id【譬如3】在两个资料里,可能只出现一个。建议joinby加入option
*joinby的演练
use "D:\data_b", clear
joinby tran_id using "D:\data_s", unm(b)
sa "D:\data_joinby"

use "D:\data_b2", clear
joinby tran_id using "D:\data_s", unm(b)
sa "D:\data_joinby2"

*mer m:m的演练
*如手册说的,mer m:m很可能是个不太好的主意,手册也建议joinby
*fgleric的考量不是没道理

use "D:\data_b2", clear
mer m:m tran_id using "D:\data_s"

use "D:\data_b2", clear
mer m:m tran_id year using "D:\data_s"
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
lxtx001 + 1 精彩帖子
txje + 2 + 2 + 2 精彩帖子

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

地板
lemonxinran 发表于 2012-12-9 17:38:42
h3327156 发表于 2012-12-9 03:16
楼主何不进行演练?
进行演练可以得到更多直觉上的感觉。
谢谢,用您教的方法演练了一下,并且看了stata的help文件,有了直观的认识,非常感谢。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-4 17:00