1

我需要计算各州的高中教育百分比。但Stata 功能count不允许by选项。到目前为止,我有以下内容:

count
local totalPopulation = r(N )

count if schenr==0
local eduBelowHighSchool = r(N)
local _eduBelowHighSchool=`eduBelowHighSchool'/`totalPopulation'

count if schenr==1
local eduHighSchool = r(N )
local _eduHighSchool=`eduHighSchool'/`totalPopulation'

count if schenr==2
local eduCollege = r(N )
local _eduCollege=`eduCollege'/`totalPopulation'

gen eduBelowHighSchool =`_eduBelowHighSchool'
gen eduHighSchool =`_eduHighSchool'
gen eduCollege =`_eduCollege'

// 如何计算每个状态的单独值?我不能用count, by (state),可以吗?上面的代码生成下表:

在此处输入图像描述

有没有其他方法可以解决这个问题?

4

1 回答 1

4

count是Stata命令,而不是函数。在 Stata 中,“功能”不是“命令”的另一个术语;相反,命令和功能是分开的。

在您的示例中,schenr显然是高中时为 1 而不是高中时为 0。因此,您想要的百分比只是schenr(乘以 100)的平均值。

如果你想要一个新变量,

egen pc_highschool = mean(100 * schenr), by(state) 

将在它适用的每个观察中放入相同的百分比。要获得每个州的列表一次,

egen tag = tag(state)
l state pc_highschool if tag 

是一种方法。

tabulate但是您可以使用,获取表tabletabstat而不必创建新变量。考虑这个可重现的例子:

. sysuse auto 

. tabulate rep78, su(foreign) nost

        Repair |   Summary of Car type
   Record 1978 |        Mean       Freq.
   ------------+------------------------
             1 |           0           2
             2 |           0           8
             3 |          .1          30
             4 |          .5          18
             5 |   .81818182          11
   ------------+------------------------
         Total |   .30434783          69

. gen foreign2 = 100 * foreign

. tabulate rep78, su(foreign2) nost

        Repair |   Summary of foreign2
   Record 1978 |        Mean       Freq.
   ------------+------------------------
             1 |           0           2
             2 |           0           8
             3 |          10          30
             4 |          50          18
             5 |   81.818182          11
   ------------+------------------------
         Total |   30.434783          69

如果您想要一个新数据集,请使用contract. (比较您最近的问题的答案如何从多个 Stata 文件中检索数据?。)

于 2013-05-29T22:30:05.553 回答