计算一个唯一值在数据集的所有列和行中出现的次数?

Count of how many times a unique value appears across all columns and rows of a dataset?

我在行中有唯一的 ID,其中列是他们 'sent' 朋友的 ID。要计算 'received' 朋友的数量,我需要计算一个 ID 在数据集的所有列和行中出现的次数。这在 R 中很容易,但我想在这个项目中继续使用 Stata。

ID F1_ID F2_ID F3_ID ID_mentions
1 2 3 4 4
2 4 1 4
3 1 2 3
4 2 1 3 3

以上玩具数据。这里,有4次提到ID #1,3次提到ID #4,等等

我想生成一个变量,其中包含第一列中每个 ID 值在数据集的任何列中被提及的次数。 ID_mentions 列对此进行了说明。

原来我在这片土地上写了一些东西。您需要使用 ssc install tab_chi

安装它
* Example generated by -dataex-. For more info, type help dataex
clear
input byte(id f1_id f2_id f3_id)
1 2 3 4
2 4 1 .
3 1 2 .
4 2 1 3
end

tabm *id

           |                   values
  variable |         1          2          3          4 |     Total
-----------+--------------------------------------------+----------
        ID |         1          1          1          1 |         4 
     F1_ID |         1          2          0          1 |         4 
     F2_ID |         2          1          1          0 |         4 
     F3_ID |         0          0          1          1 |         2 
-----------+--------------------------------------------+----------
     Total |         4          4          3          3 |        14 

编辑计算所有提及:

gen mentions = . 

quietly forval i = 1/`=_N' { 
    egen work = anycount(*id), value(`=id[`i']')
    su work, meanonly 
    replace mentions = r(sum) in `i'
    drop work 
}

list