楼主: danshenyazi
17844 8

[其他] [求助] 怎么在stata中 读取一个文件夹下类型一样的所有文件 [推广有奖]

  • 0关注
  • 0粉丝

小学生

85%

还不是VIP/贵宾

-

威望
0
论坛币
11 个
通用积分
0.0011
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
241 点
帖子
9
精华
0
在线时间
7 小时
注册时间
2009-4-21
最后登录
2013-12-25

楼主
danshenyazi 发表于 2010-6-17 15:45:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
因为一个文件夹下文件特别多,foreach命令需要指定list,现在想不指定list,而项编程一样,用一个数组或什么的获得该目录下所有的文件(只有一种类型),然后依次读取文件,进行处理,然后保存


        foreach file in this.dta that.dta theother.dta {
                append using "`file'"
        }


现在不想指定  this.dta that.dta theother.dta,用变量替换
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 文件夹 foreach append 文件夹 file

沙发
小洋芋 发表于 2010-6-17 18:40:10
提供一个笨办法,把文件夹下的所有文件重新按数字命名,然后循环就比较方便了

藤椅
arlionn 在职认证  发表于 2010-6-17 19:28:56
danshenyazi 发表于 2010-6-17 15:45
因为一个文件夹下文件特别多,foreach命令需要指定list,现在想不指定list,而项编程一样,用一个数组或什么的获得该目录下所有的文件(只有一种类型),然后依次读取文件,进行处理,然后保存


        foreach file in this.dta that.dta theother.dta {
                append using "`file'"
        }


现在不想指定  this.dta that.dta theother.dta,用变量替换
可以使用暂元的扩展功能,把符合要求的文件名称统一存储于一个暂元中,然后使用foreach语句从这个暂元中依次读取文件名称:
cd D:\stata10\ado\personal   // 进入指定的工作路径,或存储待合并文件的路径
local ff : dir . files "*.dta"         // 将所有 .dta 结尾的文件名称存储于暂元 ff 中
dis `"`ff'"'                                 // 显示 ff 中的内容
use file1.dta, clear
foreach f of local ff{
   append using "`f'"
}
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
songkuaizhong + 1 + 1 + 1 精彩帖子
dxystata + 10 好的意见建议
jzhyue + 1 + 1 + 1 对论坛有贡献

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

板凳
jzhyue 发表于 2011-4-23 19:26:04
infile using 无法运行,不知何故?
cd D:\stata_data
forval i=1/4{
clear
set obs `i'
gen x=`i'+_n
outfile using file`i'.csv,replace
}
local ff: dir . file "*.csv"         // 将所有 .dta 结尾的文件名称存储于暂元 ff 中
dis `"`ff'"'                                 // 显示 ff 中的内容
foreach f of local ff{
infile using "`f'",clear
}

报纸
voodoo 发表于 2011-4-23 21:22:44
help infile
help insheet
已有 1 人评分论坛币 收起 理由
dxystata + 10 好的意见建议

总评分: 论坛币 + 10   查看全部评分

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

地板
jzhyue 发表于 2011-4-24 11:26:01
5# voodoo
good.
thank you

7
1310306106 学生认证  发表于 2017-11-10 15:01:04
arlionn 发表于 2010-6-17 19:28
可以使用暂元的扩展功能,把符合要求的文件名称统一存储于一个暂元中,然后使用foreach语句从这个暂元中 ...
我需要实现类似功能,但我的文件名有超过一百个,这么做就不太现实,请问是否有其他实现方式。
我可以通过dos系统把所有文件的路径导出来,foreach后面说是可以用anylist 那我是否可以通过这种方法?

8
chwl771118 在职认证  发表于 2018-1-29 00:07:59
arlionn 发表于 2010-6-17 19:28
可以使用暂元的扩展功能,把符合要求的文件名称统一存储于一个暂元中,然后使用foreach语句从这个暂元中 ...
非常有用,学习了。

9
琥珀川lz 发表于 2018-3-22 15:38:22
arlionn 发表于 2010-6-17 19:28
可以使用暂元的扩展功能,把符合要求的文件名称统一存储于一个暂元中,然后使用foreach语句从这个暂元中 ...
local filename "Trait Cultivar"
foreach filename of local filename {
cd D:\Projects\Germplasm\Data\Clndta\Wheat\`filename'
local files : dir . files "*.dta"
dis `"`files'"'
foreach f of local files{
use `f', clear
save `f',replace
}
}
连老师,我这个命令错在哪里啊?因为我要操作的文件分在不同的文件夹下,如何一次性把不同文件夹下的文件dis出来?

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

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