【问题标题】:Generating Variable in Stata?在Stata中生成变量?
【发布时间】:2017-09-11 20:45:09
【问题描述】:
我有一个分类变量,正在尝试计算一个新变量,该变量将每个响应乘以其频率。例如:
total | Freq.
------------+---------------
1 | 6
2 | 12
3 | 9
5 | 5
6 | 10
我想要一个变量来表示每个响应的总和 n(即 1=6、2=24、3=27 等)。我使用 egen 尝试了一些计算,但它们似乎不起作用。如果有人有任何见解,请告诉我。
【问题讨论】:
标签:
variables
stata
generated-code
【解决方案1】:
我认为这个例子应该向你展示一般策略:
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 步骤中类别的频率。然后将新的计数变量乘以分类变量,就完成了。
【解决方案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