在我的数据集中,我对足球比赛有观察。我的一个变量是hometeam
。现在我想得到每hometeam
的平均观察量。我如何在Stata中做到这一点?
我知道我可以tab hometeam
,但由于有超过500个不同的家庭团队,我不想手动进行计算。
答案 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