我有一个分类变量,我正在尝试计算一个新变量,它将每个响应乘以其频率。例如:
total | Freq.
------------+---------------
1 | 6
2 | 12
3 | 9
5 | 5
6 | 10
我想有一个变量,它表示每个响应的总和n(即1 = 6,2 = 24,3 = 27等)。我尝试使用egen进行一些计算,但它们似乎没有用。如果有人有任何见解,请告诉我。
答案 0 :(得分:2)
我认为这个例子应该向您展示一般策略:
sysuse auto, clear
bysort rep78: egen count_rep78 = count(rep78)
gen freq_x_val = rep78*count_rep78
browse rep78 count_rep78 freq_x_val
在此示例中,rep78是分类变量。
基本上,您创建一个计数变量,它是bysort
步骤中类别的频率。然后,将新的计数变量乘以分类变量,然后再完成。
答案 1 :(得分:2)
目前尚不清楚您是想在原始数据集中包含数据还是想要新数据。这段代码同时执行:
clear
input catvar n
1 6
2 12
3 9
5 5
6 10
end
/* create fake catvar data */
expand n
drop n
/* store desired data in a variable in your data */
bysort catvar: gen sum = _N
replace sum = sum*catvar
list in 1/6, clean noobs
table catvar, c(mean sum freq)
/* or get a new dataset with desired data */
contract catvar sum, freq(n)
list, clean noobs