Stata 按组计数并折叠

Stata 按组计数并折叠,stata,Stata,我在Stata有一个数据集,希望按组(loc\u ID)和年份进行计数。我使用了以下两行代码: egen count\u obsv=tag(loc\u ID year) 这将向我的数据集(count\u obsv)添加一个计数器,对于每个新组合,对于具有相同组合的loc\u ID和year)的每个元素,该计数器为1(和0)。 然后我使用: obsv的折叠(总和)计数,按(loc\u ID year) 根据Stata论坛的各种帖子,这将导致例如: loc_ID year count_obsv

我在Stata有一个数据集,希望按组(
loc\u ID
)和年份进行计数。我使用了以下两行代码:
egen count\u obsv=tag(loc\u ID year)

这将向我的数据集(
count\u obsv
)添加一个计数器,对于每个新组合,对于具有相同组合的
loc\u ID
year
)的每个元素,该计数器为
1
(和
0
)。 然后我使用:

obsv的折叠(总和)计数,按(loc\u ID year)

根据Stata论坛的各种帖子,这将导致例如:

loc_ID  year  count_obsv
 1      2000    342
 1      2001     23
 2      2008     23
...
但我的输出是:

loc_ID  year  count_obsv
 1      2000     1
 1      2001     1
 2      2008     1
...

我总结错了什么?

当调用
egen
命令的
tag()
函数时,将值1分配给任意数量的观测值中的一个,对于指定的变量具有相同的不同值,将0分配给所有其他变量。然后,当您要求相同观测组中这些值的
时,您会得到一个1和任意数量的0的组和,因此每个和必然是1

您的问题可能是从其他一些计算中抽象出来的,这些计算按照您的预期进行,但如果您只需要一个具有频率的数据集,那么

contract loc_ID year 
我会帮你的。如果您还想要一个包含其他变量摘要的数据集,那么您需要更像

collapse (count) count=foo (mean) mean=foo (sd) sd=foo, by(loc_ID year) 
我怀疑任何国家主义者的帖子中都有其他的说法。(我在1999年写了
tag()
,我没有意识到这是一个误解。)有一个相关但可以说是截然不同的问题,
tag()
非常有用,这就是计算不同的值(通常称为唯一值)

这是一种获取
外来
类别中
rep78
不同值数量的方法

sysuse auto, clear 
egen tag = tag(foreign rep78) 
egen distinct = total(tag), by(foreign) 
tabdisp foreign, c(distinct)