楼主: 融仔仔
5228 9

[数据管理求助] 如何把多组截面数据合并成一个大的数据组 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

21%

还不是VIP/贵宾

-

威望
0
论坛币
2010 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
55 点
帖子
6
精华
0
在线时间
4 小时
注册时间
2015-11-1
最后登录
2018-9-13

楼主
融仔仔 发表于 2018-9-3 23:31:28 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
      我有一个城市里的三个区的截面数据,每个区的id都是从1开始,到最大样本量结束。比如A区的样本量有21000个(id就是从1到21000),B区有14609个(id就是从1到14609),C区有15732个(id就是从1到15732),三个区的总样本数是51341个。我试着用append命令合并过,做出来的虽然obs是51341,但是id是从1到21000,也就是与样本量最大的A区的id重合,即id=1的样本有三个,分别是ABC三个区的,依次类推。我想问的是,用什么命令可以合并三个区的数据,并且id可以从1自动排序到51341(也就是说B区的id自动从21001开始排列)。       第一次提问,不知道我说清楚了没有,希望大侠们赐教,感谢!

二维码

扫码加我 拉你入群

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

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

关键词:截面数据 数据合并 append 样本量 App

沙发
黃河泉 在职认证  发表于 2018-9-4 07:38:07
你可以先保留 A 区的 id (1-21000),然后针对 B 区的 id 做
  1. replace id = id + 21000
复制代码
,也对 C 区做类似处理后, append 所有档即可!

藤椅
蓝色 发表于 2018-9-4 10:39:48
  1. use a.dta,clear
  2. gen group=1

  3. append using b.dta
  4. replace group=2 if group==.

  5. append using c.dta
  6. replace group=3 if group==.

  7. list
复制代码
group 就可以区分开各个文件

板凳
融仔仔 发表于 2018-9-4 12:42:22
黃河泉 发表于 2018-9-4 07:38
你可以先保留 A 区的 id (1-21000),然后针对 B 区的 id 做,也对 C 区做类似处理后, append 所有档即可!
太感谢了!已经成功试过了。
经您一点拨就觉得这么简单的方法自己怎么就没想到呢

报纸
融仔仔 发表于 2018-9-5 21:39:54
蓝色 发表于 2018-9-4 10:39
group 就可以区分开各个文件
谢谢您的建议。我试过了,可是不行,id还是各个区单独排列,也就是说B区的第一个id仍然是1,没有变成21001。你用group相当于给各个区设了个序号,但是没能改变id的排序。

地板
蓝色 发表于 2018-9-6 08:15:41
融仔仔 发表于 2018-9-5 21:39
谢谢您的建议。我试过了,可是不行,id还是各个区单独排列,也就是说B区的第一个id仍然是1,没有变成2100 ...
我知道,不是你说的那个结果

我这种做法便于以后的分析,而且不会改变原始变量
3个区可能存在差异,我生产的group变量可以产生虚拟变量等等
看你自己意愿

而且一旦合并数据后产生你说的那个也很容易,
egen id1=group(group id)

7
融仔仔 发表于 2018-9-8 14:47:50
蓝色 发表于 2018-9-6 08:15
我知道,不是你说的那个结果

我这种做法便于以后的分析,而且不会改变原始变量
明白了,做出来了,非常感谢!确实这种方法更方便一些,尤其在地区很多的情况下。您说生产出来的group可以产生虚拟变量等等,地区虚拟变量这个我可以理解,但是除了虚拟变量、还有您教的生成新的id1之外还有哪些用法?望赐教!

另外,我也查到还有一种方法,在把所有区的数据都append之后,sort area id ,然后gen id1=_n。但是很奇怪的是新的id1会多出来4个,而这四个样本的所有变量都是缺省值。没想通是什么原因。

8
融仔仔 发表于 2018-9-8 15:04:25
蓝色 发表于 2018-9-6 08:15
我知道,不是你说的那个结果

我这种做法便于以后的分析,而且不会改变原始变量
刚注意到生成group时也多了四个样本,但是在生成id1时这多了的四个样本又没了。想请教这是什么道理呢?

9
蓝色 发表于 2018-9-8 15:29:12
可能是你数据存在空行
所以没append一步就需要检查一下
看看对不对
不对就找出原因,处理数据必须根据具体情况具体处理

  1. use a.dta,clear
  2. drop if id==.
  3. gen group=1   


  4. append using b.dta
  5. replace group=2 if group==. & id!=.
  6. drop if id==.

  7. append using c.dta
  8. replace group=3 if group==. & id!=.
  9. drop if id==.

  10. list
复制代码



10
融仔仔 发表于 2018-9-10 18:17:47
蓝色 发表于 2018-9-8 15:29
可能是你数据存在空行
所以没append一步就需要检查一下
看看对不对
彻底明白了。十分感谢!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-25 01:00