楼主: shichu
36106 37

[编程问题求助] 请教:如何用stata批量!!导入excel数据 [推广有奖]

  • 4关注
  • 0粉丝

博士生

37%

还不是VIP/贵宾

-

威望
0
论坛币
1001 个
通用积分
3.3000
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
1682 点
帖子
87
精华
0
在线时间
456 小时
注册时间
2010-2-19
最后登录
2024-1-18

楼主
shichu 发表于 2013-2-6 20:04:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
      是这样,我的“实证数据”这个文件夹里包含了上千个以基金名字命名的文件夹,每个文件夹里对应这支基金的几个excel表,我想要把所有以“基金名字+详细数据”命名的表都转换成stata的格式。   
      想到了用foreach这个循环语句,下面是我编的程序,但是跑不出来,恳请各位老师、朋友帮帮忙!


local corp "新华 兴全 中邮"
foreach c of local corp {
import excel "C:\Users\shichu\Desktop\实证数据\"`c'"\"`c'"详细数据.xlsx", sheet("Sheet2")
save "C:\Users\shichu\Desktop\stata数据\"`c'".dta"
}

二维码

扫码加我 拉你入群

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

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

关键词:excel数据 Stata EXCEL tata exce 如何 excel 基金 Desktop import

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
日新少年 + 1 + 1 + 1 精彩帖子

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

本帖被以下文库推荐

沙发
shichu 发表于 2013-2-6 20:32:27
怎么没有人呢...自己顶一下

藤椅
xingxf 发表于 2013-2-6 20:54:30
你把Do文件放在和那些excel文档相同的路径下,这样可以省去那些文件夹路径。
比如你有三个excel文档,文件名分别叫1、2、3,每个excel文档中都有一个sheet,叫“sheet1”,那么命令如下:
foreach file in 1 2 3 {
import excel "`file'", sheet("Sheet1") firstrow
save `file'.dta, replace
clear
}
我试过了,按我这个写肯定没问题。Import命令后面不能加clear参数,所以要单写一行clear。如果不clear,下一个import是无法执行的。

板凳
shichu 发表于 2013-2-6 21:28:53
xingxf 发表于 2013-2-6 20:54
你把Do文件放在和那些excel文档相同的路径下,这样可以省去那些文件夹路径。
比如你有三个excel文档,文件 ...
确实好使了!不过最后出现这么几行是什么意思呢:

(note: file 新华.dta not found)
file 新华.dta saved
(note: file 兴全.dta not found)
file 兴全.dta saved
(note: file 中邮.dta not found)
file 中邮.dta saved

.
end of do-file

报纸
shichu 发表于 2013-2-6 21:40:47
xingxf 发表于 2013-2-6 20:54
你把Do文件放在和那些excel文档相同的路径下,这样可以省去那些文件夹路径。
比如你有三个excel文档,文件 ...
按照您说的方法确实可以解决您举出的例子,但是对于我的数据却有一个问题,就是我的这些excel并不是放在一个文件夹里,而是分布在各个以file名称命名的文件夹里,这样路径里就必然有...\`file'\`file'详细数据\这一部分,stata可以识别\`file'详细数据\,但是好像stata不能识别\`file'\,怎么办呀?

地板
xingxf 发表于 2013-2-6 21:55:02
shichu 发表于 2013-2-6 21:40
按照您说的方法确实可以解决您举出的例子,但是对于我的数据却有一个问题,就是我的这些excel并不是放在一 ...
最简单的办法,你把那些文件都放在相同文件夹下。
foreach file in 1 2 3 {
import excel "`file'", sheet("Sheet1") firstrow
save `file'.dta, replace
clear
}
你看这个语法,foreach后面这个循环是对每个文件进行相同的操作,你要是在不同的文件路径,那就等于第二行那个import后面的命令不一样,那怎么能用循环呢。

7
shichu 发表于 2013-2-6 22:02:45
xingxf 发表于 2013-2-6 21:55
最简单的办法,你把那些文件都放在相同文件夹下。
foreach file in 1 2 3 {
import excel "`file'", sh ...
可是我如果用import excel "c:\Users\shichu\Desktop\`file'\`file'", sheet("Sheet1") firstrow,不就能把文件名也循环进去吗?

8
shichu 发表于 2013-2-6 22:03:15
打错了,是文件夹名称

9
shichu 发表于 2013-2-6 22:05:09
shichu 发表于 2013-2-6 22:03
打错了,是文件夹名称
把文件夹的名称也循环进去,另外,我想要把.得到的dta保存在另一个路径下,为什么stata就做不出来了呢:
save "C:\Users\shichu\Desktop\stata数据\`file'.dta"

10
shichu 发表于 2013-2-6 22:09:00
xingxf 发表于 2013-2-6 21:55
最简单的办法,你把那些文件都放在相同文件夹下。
foreach file in 1 2 3 {
import excel "`file'", sh ...
打错了,是把文件夹的名称也循环进去,另外,我想要把.得到的dta保存在另一个路径下,为什么stata就做不出来了呢:
save "C:\Users\shichu\Desktop\stata数据\`file'.dta"

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

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