楼主: wonway
6633 10

[数据管理求助] stata如何从一个文件夹里众多文件中选择含有某个特定字符名字的文件进行分析(loop) [推广有奖]

  • 0关注
  • 4粉丝

硕士生

89%

还不是VIP/贵宾

-

威望
0
论坛币
801 个
通用积分
54.0353
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
2181 点
帖子
129
精华
0
在线时间
121 小时
注册时间
2008-4-13
最后登录
2022-5-2

楼主
wonway 发表于 2013-9-18 13:51:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
1. 比如想批量将CSV文件转为dta文件的时候,或者批量处理dta文件的时候,我会用 -fs *-的命令,或者 local files : dir . files "*.csv"之后用loop
但是如果文件名有一定的规律,比如:A1.CSV   A2.CSV  B1.CSV B2.CSV C1.CSV C2.CSV

我只想选择其中的某些CSV文件进行处理,我尝试了 fs A*.CSV   以及 local files : dir . files "A*.csv"  都不行。

请问该如何解决呢?

2. 另外如果文件名称是杂乱无序的,可否有命令将其重新命名为连续的数字?谢谢


二维码

扫码加我 拉你入群

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

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

关键词:Stata tata loop 文件夹 Files 文件夹 files local 如何 命名

沙发
gyqznufe 发表于 2013-9-18 14:17:58
俺也想知道第二个问题,第一个问题是不是通配符*的原因啊。
知常容·容乃公·公乃王!
创新源于学、问、思、行、果!
言传身教,请用事实与数据说话!
舍而得之:福、禄、寿、喜、财

藤椅
voodoo 发表于 2013-9-19 18:00:02
local files : dir . files "A*.csv"
// 然后
foreach f of local files {
  // insheet using `f', clear
  // ...
}
应该可以的。

最好能把你的程序贴出来,让坛友们帮你诊断啊!



已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 8 + 1 + 1 + 1 热心帮助其他会员

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

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

板凳
wonway 发表于 2013-9-25 14:46:01
谢谢楼上各位,问题算是解决了:
我在test文件夹下建了四个CSV文件,A1  A2  B1 B2
当我想把所有的CSV转换成stata文件时,用了下面的命令可以实现
cd H:/test/
local files : dir . files "*.csv"
foreach f of local files {
  insheet using `f', clear
  save `f'.dta,replace
}


/*stata显示
(50 vars, 4833 obs)
(note: file a1.csv_1.dta not found)
file a1.csv_1.dta saved
(50 vars, 561 obs)
(note: file a2.csv_1.dta not found)
file a2.csv_1.dta saved
(50 vars, 3835 obs)
(note: file b1.csv_1.dta not found)
file b1.csv_1.dta saved
(50 vars, 2113 obs)
(note: file b2.csv_1.dta not found)
file b2.csv_1.dta saved

*/
当我只想将A1 A2转换为stata时,想尝试用下面的命令,stata没有任何错误信息提示,但也没有生成新的dta文件,这也是我之前问问题的初衷
cd H:/test/

local files : dir . files "A*.csv"

foreach f of local files {
  insheet using `f', clear
  save `f'_1.dta,replace
}

但是刚刚把命令改了一下,将A换成小写的a,就实现了。(即便原来的CSV文件确实是大写A)

cd H:/test/

local files : dir . files "a*.csv"

foreach f of local files {
  insheet using `f', clear
  save `f'_1.dta,replace
}

/*
(50 vars, 4833 obs)
(note: file a1.csv_1.dta not found)
file a1.csv_1.dta saved
(50 vars, 561 obs)
(note: file a2.csv_1.dta not found)
file a2.csv_1.dta saved
*/

报纸
wonway 发表于 2013-9-25 14:47:12
还有第二个问题,请问有人知道如何解决吗?”2. 另外如果文件名称是杂乱无序的,可否有命令将其重新命名为连续的数字?谢谢“

地板
voodoo 发表于 2013-9-25 16:46:13
wonway 发表于 2013-9-25 14:46
谢谢楼上各位,问题算是解决了:
我在test文件夹下建了四个CSV文件,A1  A2  B1 B2
当我想把所有的CSV转换 ...
确实挺奇怪的“症状”啊。
help extended_fcn才发现dir ["]dirname["] { files | dirs | other } ["]pattern["] [, nofail respectcase]有个respectcase的选项!我们把它忽略啦,加上去就OK啦!









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

7
voodoo 发表于 2013-9-25 16:51:54
wonway 发表于 2013-9-25 14:47
还有第二个问题,请问有人知道如何解决吗?”2. 另外如果文件名称是杂乱无序的,可否有命令将其重新命名为连 ...
这个问题应该不难啊。
local files: dir . files "*.csv"
local i = 1
foreach f of local files {
    shell rename "`f'" `i'.csv  // `f'加上双引号避免文件名中有空格
    local i = `i' + 1
}





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

8
wonway 发表于 2013-9-25 17:09:00
谢谢~

9
楚天江南客 学生认证  发表于 2016-11-3 10:58:07
问题没解决

10
wqt2958 在职认证  发表于 2019-9-14 09:13:06
wonway 发表于 2013-9-25 14:46
谢谢楼上各位,问题算是解决了:
我在test文件夹下建了四个CSV文件,A1  A2  B1 B2
当我想把所有的CSV转换 ...
请问文件名里面的“.csv”可以怎么去掉呢?

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

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