如何获得每组的平均观察次数?

时间:2013-12-11 20:00:04

标签: stata

在我的数据集中,我对足球比赛有观察。我的一个变量是hometeam。现在我想得到每hometeam的平均观察量。我如何在Stata中做到这一点?

我知道我可以tab hometeam,但由于有超过500个不同的家庭团队,我不想手动进行计算。

3 个答案:

答案 0 :(得分:3)

bysort hometeam : gen n = _N 
bysort hometeam : gen tag = _n == 1 
su n if tag 

编辑另一种更简洁的方式

bysort hometown : gen n = _N if _n == 1 
su n 

为什么标记呢?当您在个人和组级别之间来回移动时,拥有标记变量通常很有用。 egen, tag()做同样的事情。

为什么if _n == 1?对于每个组,您只需要具有此值一次,并且有两种方法可以完成对于可以像一个观察一样小的组,对于组中的第一个或最后一个观察来执行它。在一组1中,它们是相同的,但这并不重要。所以if _n == _N是另一种方法。

bysort hometown : gen n = _N if _n == _N 

在您不需要计算某些变量的错误

的情况下,需要更改代码
bysort hometown : gen n = sum(!missing(myvar)) 
by hometown : replace n = . if _n < _N 

egen, count()类似,但不完全相同。

答案 1 :(得分:2)

我假设您可以使用某个hometeam变量识别不同的id

如果你想要每id的平均观察次数,这是一种方式:

clear all
set more off

input id hometeam
1 .
1 5
1 0
3 6
3 2
3 1
3 9
2 7
2 7
end

list, sepby(id)

bysort id: egen c = count(hometeam)
by id: keep if _n == 1
summarize c, meanonly
disp r(mean)

请注意,count不会计算带有缺失的观察结果。如果您确实想要计算缺失数,那么您可以这样做:

bysort id: gen c = _n
by id: keep if _n == _N
summarize c, meanonly
disp r(mean)

答案 2 :(得分:2)

选项2:使用@Roberto的数据

   collapse (count) hometeam, by(id)
    sum hometeam,meanonly