在 Stata 中分离独特的观察结果并计算平均值

Isolating unique observations and calculating the average in Stata

目前我有一个如下所示的数据集:

 mnbr      firm       contribution
 1591      2          1
 9246      6          1
 812       6          1
 674       6          1

等等。这个想法是 mnbr 是在公司工作的员工的成员数量 # whatever。如果 contribution 为 1(为此我已将所有 0 都去掉)表示该员工已向某个基金捐款。
我还使用密码本来确定存在的独特公司的数量。目标是确定每个公司的平均贡献数,即公司 2 有 1 个贡献,公司 6 有 3 个贡献,依此类推。我遇到的问题是从密码本中访问唯一值编号。
我在线阅读了一些

的文档
inspect *varlist*
display r(N_unique)

这向我建议使用 r(N_unique) 将存储该值,但不幸的是,这种方法对我不起作用。这就是第 1 部分。

第 2 部分是我还想创建一个变量来显示每个公司的贡献,即

 mnbr      firm       contribution      average
 1591      2          1                 1
 9246      6          .                 2/3
 812       6          1                 2/3
 674       6          1                 2/3

表明公司 6 的 3 名员工中有 2 人向该基金捐款。
在此先感谢您的帮助。

为了回答您的评论,这对我有用:

clear
set more off 

input ///
 mnbr      firm       cont
 1591      2          1
 9246      6          .
 812       6          1
 674       6          1
 end

list

// problem 1
inspect firm
display r(N_unique)

// problem 2
bysort firm: egen totc = total(cont)
by firm: gen share = totc / _N

list

您必须在 运行 另一个 Stata 命令之前使用 r(N_unique),否则它可能会丢失。您还可以将该结果保存到 localscalar.

问题 2 也已解决。