在实证工作中,经常要对原始数据进行清洗,合并等工作后,才能开始使用统计软件进行分析工作。批次处理数据文件能提高效率和结果的可复制性。
而批次处理需要解决的难点包括: 找到所有符合要求的原始数据文件,以及保存计算结果。这篇短文讨论如何使用STATA和Matlab解决这两点。
首先,用input 命令生成需要处理的原始数据,便于复制下面的步骤。
cd "/Users/Dropbox/project/"
clear
input str30(contentvar1)
`"this is some text"'
`"this is more text"'
end
outfile using id1_date1_form1.txt , replace wide noquote
clear
input str30(contentvar1)
`"even more text is here"'
`"this is even "quoted" text"'
end
outfile using id2_date1_form1.txt , replace wide noquote
clear
local filenames: dir . files "*.txt"
foreach i of local filenames{
import delimited using `i', encoding(ISO-8859-1) clear
** necessary calculations
local i_out = subinstr("`i'",".txt",".dta",.)
save "`i_out'", replace
}
Matlab提供的函数和支持数据格式更加丰富,但背后的逻辑和前文提到的基本类似。
theFiles = dir(filePattern);
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(data_path, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
sample = csvread(fullFileName,1,0);
[filepath,name,ext]=fileparts(fullFileName);
mat_name =strcat(name,'.mat');
mat = fullfile(filepath,mat_name);
save(mat,'params_estimates','se_estimates','fval_estimates');
end