数据整理:历任基金经理数据变更
导读
很多时候,我们从网络或者某些数据库等下载的数据不符合使用要求,需要对数据进行整理、数据搬家与填充。今天我们通过一个简单的例子:对历任基金经理变更数据的处理,给大家介绍一下如何利用Stata对不规则的数据进行整理。
一、转换文档格式
从wind数据库下载的历任基金经理记录放在一个Excel文件中,其中涉及近400只基金,无论有多少次经理变更,都只占用一行。
以第一行数据为例,华夏成长基金经理三个不同的基金经理,括号内是任期,在任的经理只有开始日期,数据整理的目标是将任一基金的历任经理各自占一行。
将以上的Excel文件另存为文本格式,得到如下的形式(我们只列出前3只基金的记录)
此时如果直接将此txt文件直接导入到Stata中
clear all
cd e:\wind\基金经理
insheet using e:/wind/基金经理/历任基金经理.txt, clear
结果是:
导入的数据出现了乱码,如何处理这些问题,使我们导入的数据变成我们所需要的形式呢?我们可利用import delimited的encoding选项解决这些乱码。在第二部分会向大家介绍。
二、将文本文件导入Stata并进行初步处理
首先,先向大家介绍三个命令:
1、stripquotes(yes | no | default) 告诉导入分隔符如何处理双引号。yes,将删除所有双引号;no数据中的双引号不变;default自动剥离可以标识为绑定引号的引号。
2、encoding(encoding) 指定要读取的文本文件的编码。默认值为encoding(“ latin1”)。指定编码( “GB18030”)读取以GB18030编码的文件。
3、varnames(#) 指定变量名是第#行的数据; 之前的任何数据都不导入。
下面,我们使用下列命令重新将txt文本导入到Stata中:
import delimited "e:\wind\基金经理\历任基金经理.txt",stripquote(yes) varnames(1) encoding("GB18030")
结果为:
undefined
导入后发现,txt文件的第一行变为了变量名,乱码的问题也解决了,这样,我们就可以继续对数据进行后续处理。
三、基金经理变更数据整理
1、数据搬家及填充
从表格中我们发现,虽然每个基金经理各占了一行,但是位置却出现了错误,另外变量证券简称的数据也出现了很多空值。这里我们整理的思路是:首先,如果基金经理历任为空值,我们将证券代码的值赋给基金经理历任;如果证券简称为空值,那么就将前一个证券代码的值赋给下一个证券代码;最后如果证券简称为空值,将前一个证券简称的值赋给证券简称。我们使用以下命令对数据进行处理。
命令如下:
replace 基金经理历任 = 证券代码 if 基金经理历任 == ""
replace 证券代码 = 证券代码[_n - 1] if 证券简称 == ""
replace 证券简称 = 证券简称[_n - 1] if 证券简称 == ""
结果为:
2、拆分和整理任职日期
(1)变量拆分
此时我们需要将基金经理历任中的信息拆分为基金经理姓名、起始任职日期和终止任职日期三列。
split 基金经理历任,p("(" "-" ")")
我们通过"(" "-" ")"
把基金经理历任列的信息拆分为三个变量。
结果为:
(2)整理开始和结束日期
思路:计算基金经理历任2和基金经理历任3的日期,之后分别将数值赋给新的变量起始任职日期和终止任职日期;设置起始任职日期和终止任职日期显示格式为日期型格式;最后将不需要的变量删除,并基金经理历任1重新命名为基金经理。
命令:
drop 基金经理历任
gen 起始任职日期 = date(基金经理历任2,"YMD")
gen 终止任职日期 = date(基金经理历任3,"YMD")
drop 基金经理历任2 基金经理历任3
rename 基金经理历任1 基金经理
format %tdCY-N-D 起始任职日期 终止任职日期
最终结果:
这样,我们就得到了一份简单明了的基金经理变更的数据
学术前沿速递
学说观点
AIGC交流社区
未央网
毕宣
王凯
- 1
- 2
- 3