stata应用(2)

2020-05-12 08:31

2012/5/24

第一部分:append(纵向合并)

1. 现将今天拷的数据转换成txt格式,并读入stata中保存成dta文件 输入命令: clear

set mem 200m

set more off(每一次必写)

insheet using E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\income1.txt save E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\income1.dta

insheet using E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\income2.txt,clear save E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\income2.dta 将利润表的两个dta文件合并 输入命令:

append using E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\income1.dta save E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\allincome.dta

2. 用循环命令将现金流量表一个个转换成dta格式并一个个保存。 输入命令:

3. 用循环命令将现金流量表的三个dta文件合并

首先输入命令:

use E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\cash1,clear(打开第一个数据)

再输入合并命令:

file后面是取值范围,大括号里是循环命令,即分别将cash2 cash3与cash1合并

save不能写在大括号里面,因为如果这样写的话就是合并一个保存一个,这样是错的,要全部合并完之后再保存。

最后保存数据

一般最后都加个,replace以防出错。

第二部分:date()函数

1.日期表示方式: 1959 12 31 记为第-1天 1960 01 01 记为第0天 1960 01 02 记为第1天 1960 01 31 记为第30天 1960 02 01 记为第31天

2.输入命令:

set obs 4(假定有四个观测值) gen 是generate生成变量

gen int bday =uniform()*1000-200 生成一个整数型int的变量bday 是变量名 uniform()是一个函数,即生成从0到1的随机数,*1000将范围扩大到0到1000,再减200意思是随机从-200到800之间取四个随机数。

format 改变一个数值的显示形式,即当这个数值是日期的时候可以显示出是哪一年哪一日,(CY是century years的简写,如果不写C的话只显示两位的年份;N代表阿拉伯数字显示 的月份;m代表英文简写显示的月份。)

format bday1 %d format bday2 üYND format bday3 üY_N_D format bday4 %dN_D_CY format bday5 üY_m_D

每一种都是同一日期但是不一样的年月日的表示方法。 命令里的下划线dCY_N_D显示出来的是空格

4. date(变量名,“YMD”)函数 YMD是代表年月日,都要大写

第一个格子里输入变量的名字,是字符型变量;后面一个格子固定是“YMD”

date函数就是将所有的字符型变量反映成stata里面的代表日期的数值型变量 例可以将19600101这一字符串反映成0这一数值

browse里面红色的是字符型变量,不能直接加减;黑色的是数值型变量,可以直接加减。 accper在browse里面是代表日期的字符型变量,是红色的 输入命令:

gen date=date(accper,“YMD”)

完成以下转换:将红色的字符型变量转变成黑色的数值型变量

5. 要是想看17987代表的到底是哪一天就要改变他的显示形式

format都是以百分号开头,12.0g代表在小数点前可以显示12位数字

输入命令:

将其全部转换成以年月日显示的数值型变量。

format后面只能跟数值型的数据,将其改变成所需要的形式。

输入命令:

gen year=year(date)

将日期中的年份以数值型的数据提取出来,但是要先将字符型的变量变成数值型的。

年月日单独的函数是以g(x)的形式表示;而date函数是以f(x,y)的形式显示的 gen month=month(date) gen day=day(date)

第三部分:merge(横向合并)

1. 看help merge里面的Basic description

2. 1:1型的merge,第一个读入的数据是master,用的数据是using

输入命令:(id是唯一确定的变量的名字,1:1代表一个变量只取一个值即id1对应age22 merge 1:1 id using 路径\\数据名.dta

3.命令形式:

merge 1:1 varlist using filename [, options] 先打开利润表,然后将现金流量表与他merge

输入命令:

merge 1:1 stkcd accper using E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\allcash

如果出现错误:

代表在using表即现金流量表里变量与日期字符值不是唯一对应的

所以将命令改为:

merge 1:m stkcd accper using E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\allcash即可。

其中全部可以matched就显示出数值3;如果master表里有using表里没有,显示1;如果using表里有,master表里没有,显示2.

3. 打开利润表,将日期变成数值型数据,并显示成日期型的格式。 输入命令:

4.改变新形成的日期数值型数据的位置,把在最后面的位置换在stkcd后面 输入命令:

order stkcd date

如果输入命令:

sort stkcd accper(意思是先对stkcd排序,再对accper排序,都是以升序排列) gsort 可以按升序也可以按降序排列,按降序排列的话在变量前加负号即可 gsort -stkcd accper(意思是先stkcd降序排列,再对accper升序排列)

4. 输入命令:

duplicates drop stkcd accper,force (意思是对于这两个变量,如果完全相同的话就把后面的删掉,只保留第一个记录) 只要drop后面跟变量就加 force,是强制执行的意思。 最后保存数据:

save E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\allincome.dta,replace

5. 再把现金流量表与利润表merge

先打开现金流量表,然后把字符型的日期转为数值型,并改变其显示形式,以年月日表示: 输入命令:

use E:\\Lessons\\Stata11\\数据\\Lesson2\\txt\\allcash.dta,clear gen date=date(accper,\format date üY_N_D

然后把数值型的date从最后移到stkcd后面,再把stkcd和date以升序排列 order stkcd date sort stkcd date

把重复的数据删掉:

duplicates drop stkcd date,force

只保留现金流量表和利润表里面的年报数据,把一些半年报的和季度报的数据删除: 这条命令一定要加在保存命令之前。

keep if month(date)==12(有两个等号哦,一个是赋值号,一个是逻辑号) 只要是逻辑语句都是要双等号,双等号才是真的等号

最后再以1:1的形式将两表合并:


stata应用(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大理石、花岗石湿作施工工艺及检测标准

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: