【问题标题】:Importing 300 Excel Files at once (Stata)一次导入 300 个 Excel 文件(Stata)
【发布时间】:2020-12-23 20:30:46
【问题描述】:

我正在尝试将 300 个 Excel 文件导入 Stata 的过程自动化。 这些文件代表 25 年的时间,每个月代表一个文件。这些文件包含相同数量和类型的变量(即都是字符串变量)。

如果有任何提示,我将不胜感激。字符串变量如下:

unemp_rate  gdp     gini       year  
11           .02     22        2002
22            2      30        2003

我的代码如下:

clear all
ssc install xls2dta
xls2dta, save("C:\Users\xyz\OneDrive - xyz\Documents\xyz\xyz") : import excel "C:\Users\xyz\xyz- xyz\Documents\xyz\xyz"

xls2dta, save ("C:\Users\xyz\xyz- xyz\Documents\xyz\xyz") : append, force
use "C:\Users\xyz\xyz- xyz\Documents\xyz\xyz2\xyz.dta", clear

但是,变量已导入为 A、B、C、D 等...而不是上面的实际变量名称。

【问题讨论】:

  • 您可能想使用firstrow 选项到import excel

标签: excel import stata


【解决方案1】:

有一个完整的discussion at Statalist about it,包括xls2dta的用法;但是,这是一个不依赖任何外部命令的解决方案。此外,这种方式特别适合您的问题,因为您提到所有文件都保留相同的结构(即相同的变量名)。

clear all
global route = "C:\root_to_your_files"
cd "$route"
tempfile building
save `building', emptyok
// List all the ".xlsx" files in folder "${route}"
local filenames : dir "${route}" files "*.xlsx"
// loop over all files, while appending them 
foreach f of local filenames {
    import excel using `"`f'"' ,firstrow allstring clear
    //it identifies the procedence of the rows (i.e., the .xlsx)
    gen source = `"`f'"'
    // append new rows 
    append using `building'
    save `"`building'"', replace
}
// save all the xlsx files in a single dta file
save "${route}\all_xlsx_files" ,replace

【讨论】:

  • 非常感谢 Alvaro,只是澄清一下,介意澄清第三行吗?我尝试了下面的代码,但出现错误:``` cd "$C:\Users\xyz\OneDrive - xyz\Documents\xyz\xyz" ```
  • 你好@maa425,cd 代表change directory。此外,我将第二行中文件的整个路径定义为一个名为routeglobal。最后,我使用引号内的$ 运算符调用声明的全局,告诉Stata 我想在这个目录中工作。有关其他信息,请在 Stata 中键入 help cdhelp macro。最后附上Stata tip might be useful for you.
猜你喜欢
  • 2013-10-24
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
相关资源
最近更新 更多