前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >批次处理数据文件:以STATA和MATLAB为例

批次处理数据文件:以STATA和MATLAB为例

作者头像
宋彦
发布2020-03-18 11:18:11
1.4K0
发布2020-03-18 11:18:11
举报
文章被收录于专栏:一点ECON一点ECON

在实证工作中,经常要对原始数据进行清洗,合并等工作后,才能开始使用统计软件进行分析工作。批次处理数据文件能提高效率和结果的可复制性。

而批次处理需要解决的难点包括: 找到所有符合要求的原始数据文件,以及保存计算结果。这篇短文讨论如何使用STATA和Matlab解决这两点。

STATA批次处理数据

首先,用input 命令生成需要处理的原始数据,便于复制下面的步骤。

代码语言:javascript
复制
    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
  • 经过上一步,需要处理的数据文件是在project文件夹下所有文件名内包括id*的txt文档。使用local extended functions中的 dir 命令,可以将所有符合条件的文件名称保存在一个指定的Local里面。
  • 使用循环语句foreach对符合条件的文档进行批次处理。
  • 在批次处理过程中,使用subinstr函数把文件后缀从.txt换成.dta格式,便于保存。
代码语言:javascript
复制
    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方法

Matlab提供的函数和支持数据格式更加丰富,但背后的逻辑和前文提到的基本类似。

  • 第一步都是需要将符合条件的文件的信息保存下来。不同的是,Matlab 中的dir函数,例如dir('*.csv'),会把所有符合'.csv'的数据文件保存成一个struct_array。在Matlab里,Struct_array是功能非常丰富的一种数据格式。它既有array的特点,可以通过positional index来储存数据,而每一个数据都类似于一个字典,有key和value。
  • 第二步,使用循环语句调用struct_array中存储的文件进行批量运算。使用fullfile 和 fileparts两个函数把读取的数据文件中的信息保存到有相应名称的.mat文档中。
代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点ECON 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • STATA批次处理数据
  • Matlab方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档