楼主: 沧海长啸
5100 9

[编程问题求助] stata文件合并问题 [推广有奖]

  • 70关注
  • 7粉丝

已卖:35份资源

副教授

2%

还不是VIP/贵宾

-

威望
0
论坛币
76 个
通用积分
7.5793
学术水平
9 点
热心指数
13 点
信用等级
5 点
经验
26026 点
帖子
340
精华
0
在线时间
975 小时
注册时间
2010-5-10
最后登录
2025-12-29

楼主
沧海长啸 发表于 2015-9-24 20:21:49 |AI写论文
50论坛币
最近需要合并大量excel表格,格式不统一,年度上有空缺,类型上也有空缺。使用stata如何合并,求助高手。
文件1 文件1
文件2 文件2

希望得到的数据格式如下:
结果

最佳答案

gujun1225 查看完整内容

假定你把所有文件都存为了stata文档 use file1, clear forvalues i=2/500 { append using file`i' } save temp, replace forvalues i=2001/2005 { //嘉定你的年份是介于2001与2005 keep id item `i' gen year=`i' save temp_`i', replace } use temp_2001, clear forvalues i=2002/2005 { append using temp_`i' } save final, replace 最后的效果你自己考虑,reshape或者转置都可以 ...
关键词:Stata tata 文件合并 excel表格 Excel表 excel表格 如何

沙发
gujun1225 发表于 2015-9-24 20:21:50
假定你把所有文件都存为了stata文档

use file1, clear
forvalues i=2/500 {
  append using file`i'
  }

save temp, replace

forvalues i=2001/2005 {  //嘉定你的年份是介于2001与2005
  keep id item `i'
  gen year=`i'
  save temp_`i', replace
  }

use temp_2001, clear
forvalues i=2002/2005 {
  append using temp_`i'
  }

save final, replace

最后的效果你自己考虑,reshape或者转置都可以,我就不写了

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
夏目贵志 + 5 + 1 热心帮助其他会员
沧海长啸 + 5 + 3 + 3 + 3 精彩帖子

总评分: 经验 + 5  论坛币 + 5  学术水平 + 3  热心指数 + 4  信用等级 + 3   查看全部评分

藤椅
沧海长啸 发表于 2015-9-24 22:55:02 来自手机
gujun1225 发表于 2015-9-24 20:42
假定你把所有文件都存为了stata文档

use file1, clear
谢谢回复。现在的难点在于把excel读入stata,成为理想格式的数据。最难解决的是变量名问题。再请教个问题:在用insheet读入文本数据之后,如何使首行作为变量名。因为有的年份有,有的年份没有。直接读入的话,就变成了v1 v2 v3 v4……,下一个文件也是v1  v2,但是v1、v2代表的年份不同。

板凳
gujun1225 发表于 2015-9-25 09:06:58
沧海长啸 发表于 2015-9-24 22:55
谢谢回复。现在的难点在于把excel读入stata,成为理想格式的数据。最难解决的是变量名问题。再请教个问题: ...
踏实点,仔细去读读insheet的帮助

报纸
沧海长啸 发表于 2015-9-25 09:56:09
gujun1225 发表于 2015-9-25 09:06
踏实点,仔细去读读insheet的帮助
您批评的是。恕我资质愚钝,我之前认真读了帮助。知道选项中有names选项。可能是我没表达清楚问题,由于文本文件的首行都是“项目 2009 2010”这样的字段,无法直接读入作为变量名。因为有大量文件,逐个改变量名太麻烦。现在正在寻找解决方法。

地板
gujun1225 发表于 2015-9-25 11:05:17
沧海长啸 发表于 2015-9-25 09:56
您批评的是。恕我资质愚钝,我之前认真读了帮助。知道选项中有names选项。可能是我没表达清楚问题,由于文 ...
如果是这样,使用VBA先去掉首行再说。或者你看看insheet可否指定范围

7
青居客 发表于 2015-9-25 20:48:00
这个东西先在excel里调整好了,再导入到stata里。有些处理在excel里更方便,
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
沧海长啸 + 3 + 3 + 3 + 3 精彩帖子

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

8
liuding1111 发表于 2015-9-25 22:35:39
楼主的数据形式与世界银行的WDI数据库很相似,有个专门转换这种数据格式的命令:wdireshape,可直接转换为楼主想要的格式(长型面板)。最好是CSV格式的原始数据,然后在导入到Stata之前要在年份之前加两个字母(比如yr)。Stata中变量的命名规则是不允许以数字开头的,所以楼主直接导入Excel数据时,第一行不会被识别为变量名。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
沧海长啸 + 3 + 3 + 3 + 3 精彩帖子

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

9
沧海长啸 发表于 2015-9-29 15:34:07
gujun1225 发表于 2015-9-25 11:05
如果是这样,使用VBA先去掉首行再说。或者你看看insheet可否指定范围
谢谢,我用VBA处理好了

10
gujun1225 发表于 2015-10-4 20:44:10
沧海长啸 发表于 2015-9-29 15:34
谢谢,我用VBA处理好了

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

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