Stata:用另一个来计算变量?

时间:2014-07-01 14:33:49

标签: loops count max stata

我的小Stata问题:

我有一张这样的表:

My Data

我想创建一个变量来计算每个引用的不同cat的数量。这是......对于A引用,有2只猫... 3和6.所以我想要另一个变量(dif_cat)和两个2。

对于此示例,它看起来像这样:

Example

我尝试了不同的方法,我总觉得自己越来越接近,但后来我无法做到。 我使用bysortpreserve尝试restore,但我似乎没有到达那里。

一次尝试是:

egen tag = tag(cat citing) 
egen distinct = total(tag), by(citing)

你能帮助我吗?

PS:我知道这与Stata无关(但可能会激发某人的兴趣)我会尝试使用实际的编程语言,例如: 有一个循环做引用列并检查是否等于之前的那个 有一个辅助空矢量 在第一个周期内进行第二个周期,看看当前的猫是否在向量中,如果没有放在那里。 当引用改变时,我将计算辅助矩阵的长度,重置它并再次进行。问题是我需要在Stata代码中使用它:S

1 个答案:

答案 0 :(得分:2)

单向(来自Stata FAQ)是:

clear all
set more off

input ///
str1 citing cat
A 3
A 6
B 5
B 2
B 5
B 2
C 2
C 4
C 3
D 5
E 1
E 1
end

list, sepby(citing)

bysort citing cat: gen numvals = (_n == 1)
by citing: replace numvals = sum(numvals)
by citing: replace numvals = numvals[_N]

list, sepby(citing)