在Stata中生成变量?

时间:2017-09-11 20:45:10

标签: variables stata generated-code

我有一个分类变量,我正在尝试计算一个新变量,它将每个响应乘以其频率。例如:

      total |        Freq.     
------------+---------------
          1 |          6        
          2 |          12        
          3 |          9        
          5 |          5        
          6 |          10        

我想有一个变量,它表示每个响应的总和n(即1 = 6,2 = 24,3 = 27等)。我尝试使用egen进行一些计算,但它们似乎没有用。如果有人有任何见解,请告诉我。

2 个答案:

答案 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