楼主: hittilehua
11871 14

[其他] 如何在STATA中读取大批量的EXECL文件? [推广有奖]

  • 0关注
  • 3粉丝

副教授

44%

还不是VIP/贵宾

-

威望
0
论坛币
1324 个
通用积分
7.0695
学术水平
6 点
热心指数
5 点
信用等级
5 点
经验
3956 点
帖子
333
精华
0
在线时间
1174 小时
注册时间
2005-5-14
最后登录
2024-4-27

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我目前在做一个股票收益率波动方面的东西,从WIND上下载的个股历史行情数据都是一个个单独的文件,如何用STATA读取大批量EXECL文件上的数据,(不用复制粘贴,这样的工作太繁琐了!!),然后用STATA将每个个股上的数据进行合并计算呢?跪求各位大哥大姐的求助啊!!
二维码

扫码加我 拉你入群

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

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

关键词:EXECL Stata tata EXE 大批量 收益率 如何 大哥 历史

沙发
张培利 在职认证  发表于 2010-8-27 17:39:34 |只看作者 |坛友微信交流群
这东西真的高深哦

使用道具

藤椅
sungmoo 发表于 2010-8-27 19:53:26 |只看作者 |坛友微信交流群
http://www.pinggu.org/bbs/thread-833383-1-1.html

将xls文件另存为csv文件,然后使用insheet using

使用道具

板凳
hittilehua 发表于 2010-8-27 21:39:04 |只看作者 |坛友微信交流群
楼上的兄弟,那个只是从一个表格中读取数据到STATA,而我这个,则是从1000多个个股EXECL文件中把所需要的文件直接读取出来,直接合并到一个表格当中去,我现在需要的是批量操作,而不是简单的粘贴复制,这样工作量太大了。再次跪求各位兄弟姐妹了。

使用道具

报纸
sungmoo 发表于 2010-8-27 22:29:48 |只看作者 |坛友微信交流群
hittilehua 发表于 2010-8-27 21:39 楼上的兄弟,那个只是从一个表格中读取数据到STATA,而我这个,则是从1000多个个股EXECL文件中把所需要的文件直接读取出来,直接合并到一个表格当中去,我现在需要的是批量操作,而不是简单的粘贴复制,这样工作量太大了。
你的excel文件命名有无规律?可利用该规律使用循环。

另外,各excel文件的数据结构是否相同?若不相同,期望的最终数据结构是什么样的?

使用道具

地板
rosenbloog 发表于 2010-8-28 07:41:44 |只看作者 |坛友微信交流群
可以试着参照这个在你的do file里:
use http://statistics.ats.ucla.edu/s ... faq_multmerge/data1, clear
sort id
save d:\data\data1_a, replace

use http://statistics.ats.ucla.edu/s ... faq_multmerge/data2, clear
sort id
save d:\data\data2_a, replace

use http://statistics.ats.ucla.edu/s ... faq_multmerge/data3, clear
sort id
save d:\data\data3_a, replace

merge id using d:\data\data1_a d:\data\data2_a
drop math science socst
save d:\data\merged_data

使用道具

7
wonway 发表于 2010-8-29 15:57:52 |只看作者 |坛友微信交流群
我也有类似问题,请问5楼,如果文件名有规律,insheet using的循环怎么写呢?

使用道具

8
voodoo 发表于 2010-8-29 20:58:47 |只看作者 |坛友微信交流群
由于Stata目前还无法直接导入xls文档,所以个人认为这道题目的难点不在于“循环”(即使是没有任何规律的文件名,Stata照样有办法循环之!!!help forval; help foreach; help extended_fcn),该题的最大难点在于:如何“将xls文档另存为csv文档”(或者越过此步骤)。

假如你只有区区若干xls文档,那么逐一用Microsoft Excel打开,然后另存为“csv文件”,一点问题都没有,但……假如你有1000+个xls文档呢?!难道你真的想做1000+次的“双击(打开)→文件→另存为→(保存类型)逗号分割,csv文档”吗?

经过初步思索,本人目前想到的思路有三,逐一列出,供大家借鉴,也请论坛高手支招:
其一,直接的笨办法。运用类似AutoIt3或鼠键精灵之类的小软件,编写相应script模拟鼠标键盘动作代替人工完成1000+次的“双击(打开)→文件→另存为→(保存类型)逗号分割,csv文档”工作。假如文件名没有规律,那么批量重命名小软件(如rename it!)恐怕也是必须的。
其二,VBA方法。在Microsoft Excel中编写vba程序,完成指定文件夹下1000+指定xls文件的“双击(打开)→文件→另存为→(保存类型)逗号分割,csv文档”工作。不要怀疑Microsoft Excel的功能,这工作确实可以很优雅地实现。
其三,将xls文件直接转换为dta文件。单一xls文件转换为dta,Stat/Transfer软件就是首选,那么又该如何实现1000+次循环呢?仔细查阅Stat/Transfter的帮助以及在Stata内findit stcmd也许有你想要的答案!

最后,要指出的是,
①事实上,Wind支持将数据文档存储为csv格式或txt格式,如此我们可跳过将xls文件另存为csv文件的步骤。
②由于Stata的insheet命令(help insheet)和Stat/Transfer将智能判断变量名以及变量类型(数值型还是字符型),这可能导致在你利用循环将“导入/保存”的1000+个.dta文档append起来(也可能是merge起来)时提示出错(主要是“变量类型不匹配”),这需要你考虑并加以处理;
③Wind导出的xls格式数据最后一行往往会标注“数据来源:Wind资讯”字样,这需要你在程序循环中将其删除——当然本贴涉及的是从Wind逐一导出的行情序列数据文档,不存在此问题。

总之,高效准确的数据处理也是门大学问,它可能需要你的跨界思考。
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
rangerqu + 1 + 1 + 1 观点有启发
Elisa129 + 1 + 1 + 1 精彩帖子

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

巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

9
voodoo 发表于 2010-8-29 21:12:41 |只看作者 |坛友微信交流群
突然想起若干月前曾经有个类似的帖子(我也有进行回复),现将其找出,http://www.pinggu.org/bbs/viewthread.php?tid=765534&page=1#pid5439037,供大家参考。

相对于若干月前的那个帖子,VBA方法是我新近想到的。据说还可以用Stata的odbc命令,可惜我手头尚未有相关的实现案例。
巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

10
强尼 发表于 2010-8-31 10:06:46 |只看作者 |坛友微信交流群
stata transfer先转化成stata可以接受的格式
你没那么多观众,别那么累。
[img][/img]

使用道具

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

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

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

GMT+8, 2024-4-28 10:15