2013-12-11 44 views
1

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

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

回答

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

EDIT另一种方式来做到这一点更简洁

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()类似于算missings,但并不相同的情况下进行更改。

2

我假设你可以用一些id变量来识别不同的hometeam

如果你想每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) 

注意与missings意见不被count计数。如果你确实想算missings,那么你可以做:

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

谢谢,这是有效的。但是,我认为有一些解决方案不需要删除观测值会很好。 – bonifaz

+0

不客气。 @NickCox给出了一个答案。他的'hometeam'变量是我的'id'。基本上,而不是使用'keep','generate'一个'tag'变量,用它可以调整'summarize'。 –

2

选项2:使用@Roberto

的数据
collapse (count) hometeam, by(id) 
    sum hometeam,meanonly 
相关问题