按组计数并折叠
Count by groups and collapse
我在 Stata 中有一个数据集,想按组 (loc_ID
) 和年份进行计数。我使用了以下两行代码:
egen count_obsv = tag(loc_ID year)
这为我的数据集 (count_obsv
) 添加了一个计数器,它是 1
(对于具有相同 loc_ID
和 [= 的每个元素的 0
18=]) 对于每个新组合。
然后我使用:
collapse (sum) count_obsv, by(loc_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对所有其他人。然后,当您在同一组观察中询问这些值的 sum
时,您会得到一个 1 和任意数量的 0 的组总和,因此每个总和必然为 1.
你的问题可能是从其他一些按你预期工作的计算中抽象出来的,但如果你想要的只是一个有频率的数据集,那么
contract loc_ID year
会为你做的。如果你也想要一个包含其他变量摘要的数据集,你需要更像
的东西
collapse (count) count=foo (mean) mean=foo (sd) sd=foo, by(loc_ID year)
我怀疑任何国家主义者的帖子都不是这样说的。 (我在 1999 年写了 tag()
,我不认为这是一个误解。)有一个相关但可以说是不同的问题,其中 tag()
有用,它正在计算不同的值(通常称为唯一值)。
sysuse auto, clear
egen tag = tag(foreign rep78)
egen distinct = total(tag), by(foreign)
tabdisp foreign, c(distinct)
将是获取 foreign
类别中 rep78
的不同值数量的一种方法。
我在 Stata 中有一个数据集,想按组 (loc_ID
) 和年份进行计数。我使用了以下两行代码:
egen count_obsv = tag(loc_ID year)
这为我的数据集 (count_obsv
) 添加了一个计数器,它是 1
(对于具有相同 loc_ID
和 [= 的每个元素的 0
18=]) 对于每个新组合。
然后我使用:
collapse (sum) count_obsv, by(loc_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对所有其他人。然后,当您在同一组观察中询问这些值的 sum
时,您会得到一个 1 和任意数量的 0 的组总和,因此每个总和必然为 1.
你的问题可能是从其他一些按你预期工作的计算中抽象出来的,但如果你想要的只是一个有频率的数据集,那么
contract loc_ID year
会为你做的。如果你也想要一个包含其他变量摘要的数据集,你需要更像
的东西collapse (count) count=foo (mean) mean=foo (sd) sd=foo, by(loc_ID year)
我怀疑任何国家主义者的帖子都不是这样说的。 (我在 1999 年写了 tag()
,我不认为这是一个误解。)有一个相关但可以说是不同的问题,其中 tag()
有用,它正在计算不同的值(通常称为唯一值)。
sysuse auto, clear
egen tag = tag(foreign rep78)
egen distinct = total(tag), by(foreign)
tabdisp foreign, c(distinct)
将是获取 foreign
类别中 rep78
的不同值数量的一种方法。