 
    [此贴子已经被作者于2008-7-30 15:12:03编辑过]

用这样两个数据文件:
1:就是你上面的数据:a股票代码 b股票简称 c统计日期 d行业 e行业代码 f ROE>200%的股票代码
2:构造一个含一个变量的数据文件,该变量名称是1的第一个变量a,取值为1中最后一个变量f的观测值
然后两个文件sort a,merge a
drop if _merge==3
看看怎么样

谢谢,楼上两位的解答;
菜菜地问一下,ccapboss,
drop if _merge==3
里面的 merge==3
是什么意思
谢谢



[此贴子已经被作者于2008-8-5 9:59:39编辑过]

也是经济类的问题,请教大家,谢谢。
我的数据库大概是这样的
公司名 year data6 data19 data 21
a 1992 23 . 67
a 1993 34 35 54
a 1994 23 4 5
b 1992 23 5 .
b 1993 3 4 5
b 1994 5 2 .
如果一个公司3年的数据缺少任何一个,都不能用,都要删除。例如这里公司a 在1992年里的data19没有数据,应该删除a公司的记录,公司b 在1994年里没有data21的记录,b公司也应该删除。
我用的drop if data*==.&(year==1992 | year==1993 | year==1994)
但是stata 显示 data*是无效的。可是如果我用sum data* 就没有问题。所以通配符可以这样用吗?还是我后面的if语句有问题?谢谢大家

用下面的小程序删除:
foreach var of varlist var1 var2 var3 {
  drop if `var'==.
}

 谢谢楼上的。不过我之前已经用很笨的方法,如下
谢谢楼上的。不过我之前已经用很笨的方法,如下
drop if data6==.
drop if data19==.
drop if data21==.
一个一个排除了missing value了。我用楼上介绍的方法删除不了任何记录。
我现在要做的是,想要得到balance 的Panel.也就是每个公司都有3年的观测值,这3年都没有missing value. 如果一个公司缺任何一年数据,这个公司的其他年份的记录就完全删除。
对于公司a来说,1993年和1994年的数据也不要了,公司b1992年至1994年的数据也都不要了。怎么实现呢?
我还有个问题,我想计算data6的年度平均值,就是把data6 的1992年的值与1993年的值相加,然后除于2,得到的值与1993的data19,data21在同一行内。
因为要计算 每年的 data19+data21+0.5*(年初的data6+年底的data6)
请问,怎么实现?谢谢
[此贴子已经被作者于2008-8-21 23:15:26编辑过]

ssc install onespell
onespell data6 data19 data 21,saving(data_cy)
use data_cy,clear
xtbalance , range(1992 1994)
(xtbalance下载地址:https://bbs.pinggu.org/thread-226846-1-1.html)
[此贴子已经被作者于2008-8-24 9:21:17编辑过]

哇,楼上提供的这个好神奇啊,太谢谢了。我用了以后,激动地跳了起来,哇,太棒了。谢谢,谢谢。
楼上的真是高手啊。能不能再帮我看看一个问题?如下,
公司名 year data6 data19 data 21
a 1992 23 34 .
a 1993 34 35 .
a 1994 23 4 5
b 1992 23 5 .
b 1993 3 4 6
b 1994 5 2 7
当 a 公司的data21在1992年和1993年缺失时,想把1994年的数据值赋给1992年和1993年。请问怎么实现啊,谢谢大侠!!
也就是要把上面的数据改成
公司名 year data6 data19 data 21
a 1992 23 34 5
a 1993 34 35 5
a 1994 23 4 5
b 1992 23 5 6
b 1993 3 4 6
b 1994 5 2 7
自己解答这个问题,嘻嘻。刚刚在stata的网站上找到了类似的帮助信息,
Without tsset: copying nonmissing values
Let us first look at the case where you have not tsset your data (see, for example, [TS] tsset for an explanation), but we will assume that the data have been put in the correct sort order, say, by typing
. sort time
If missing values occurred singly, then they could be replaced by the previous value
. replace myvar = myvar[_n-1] if missing(myvar)
or by the following value
. replace myvar = myvar[_n+1] if missing(myvar)
Here the subscript notation used is that _n always refers to any given observation, _n−1 to the previous observation and _n+1 to the following observation, given the current sort order. There is not, of course, any observation before the first, or after the last, so myvar[0] is always missing, as is myvar for any observation number that is negative or greater than the number of observations in the data.
[此贴子已经被作者于2008-8-25 20:48:44编辑过]

更为简洁的处理方法:
tsset code year
xtbalance, range(1992 1994) miss(_all)
(xtbalance下载地址:https://bbs.pinggu.org/thread-226846-1-1.html)

 扫码加好友,拉您进群
扫码加好友,拉您进群 
    
 
    

 收藏
收藏



















