我的小Stata问题:
我有一张这样的表:
我想创建一个变量来计算每个引用的不同cat的数量。这是......对于A引用,有2只猫... 3和6.所以我想要另一个变量(dif_cat
)和两个2。
对于此示例,它看起来像这样:
我尝试了不同的方法,我总觉得自己越来越接近,但后来我无法做到。
我使用bysort
和preserve
尝试restore
,但我似乎没有到达那里。
一次尝试是:
egen tag = tag(cat citing)
egen distinct = total(tag), by(citing)
你能帮助我吗?
PS:我知道这与Stata无关(但可能会激发某人的兴趣)我会尝试使用实际的编程语言,例如: 有一个循环做引用列并检查是否等于之前的那个 有一个辅助空矢量 在第一个周期内进行第二个周期,看看当前的猫是否在向量中,如果没有放在那里。 当引用改变时,我将计算辅助矩阵的长度,重置它并再次进行。问题是我需要在Stata代码中使用它:S答案 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)