loops - 如何摆脱 Stata 循环中的扩展?

标签 loops csv stata

我正在使用 Stata 分析来自 .csv 文件的数据。我写了一个循环来遍历目录中的所有文件,这样我就可以一劳永逸地 insheet 它们。在这里:

cd "C:\Users\Monica\Documents\Tweet Archivist\csv2806"
! dir *.csv /a-d /b > filelist.txt

* Looping through the filelist to transform all of them in .dta files
file open trial4 using "C:\Users\Monica\Documents\Tweet Archivist\csv2806\filelist.txt", read
file read trial4 line
while r(eof)==0 {
  cd "C:\Users\Monica\Documents\Tweet Archivist\csv2806"
  insheet using `line', tab
  save `line'.dta, replace
  drop _all
  file read trial4 line
  }
file close trial4

我的问题是:当我使用这种方法时,.csv 文件扩展名被合并到 Stata 的文件名中,因此我有 file1.csv.dta。有什么办法可以防止这种情况发生吗?我知道这可能看起来是一个微不足道的问题,甚至是一个相当无聊的问题,因为我可能只是打开文件并手动删除 .csv,但我想知道是否有办法在状态。我在 DOS 中尝试了 rename 命令,但这消除了扩展名,然后 Stata 无法将文件识别为 .csv

最佳答案

您想要的只是在 help extended_fcn 中记录的一些宏操作。

同时,我想推荐一种更简单的方法,即使用 Stata 获取文件列表。 (在您的代码中明确表示您使用的是 Windows,但这里的方法是跨平台的。)这里是:

cd "C:\Users\Monica\Documents\Tweet Archivist\csv2806"
fs *.csv 

foreach f in `r(files)' { 
    insheet using `f', tab clear 
    local F : subinstr local f ".csv" "" 
    save `F'.dta, replace
}

此处用户编写的命令 fs 是 Stata 工具的便捷包装器,用于从操作系统获取文件名。使用 ssc install fs 进行安装。

fs 调用可能更复杂,包括两个或多个通配 rune 件规范。有关详细信息,请参阅 fs 的帮助。

关于loops - 如何摆脱 Stata 循环中的扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17388874/

相关文章:

java - 如何创建一个对象,将其设置为与另一个对象完全相同,并修改它而不影响循环内的旧对象?

python - Pandas DataFrame 的起始索引为 1

file - 我想将 .csv 文件的内容转储到 Visual Basic 6 中的字符串中。我的代码有什么问题?

python-2.7 - 是否可以将 csv 文件作为 python 包的一部分包含在内

r - 为什么无论我如何将偏移量输入到模型中,预测都不会忽略 R 中泊松模型的偏移量?

loops - 这段代码的哪一部分导致了无限循环?

java - 如何在我的代码中集成循环

r - 相当于 R 中的 Stata 选项卡命令

python - 在同一输出上具有频率、行百分比和列百分比的 Pandas Crosstab

linux - 如何在 bash 循环中回显参数