2017-09-11 9 views
0

나는 범주 형 변수를 가지고 있으며 각 응답에 해당 빈도를 곱하는 새로운 변수를 계산하려고합니다. 예는 :Stata에서 변수 생성?

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

I는 합계 n은 각각 응답 (즉, 6 = 1, 24 = 2, 27 = 3, 등)를 표시하는 변수를 갖고 싶다. egen을 사용하여 몇 가지 계산을 시도했지만 작동하지 않았습니다. 아무도 통찰력이 있다면 알려주세요.

+1

항상 코드 시도를 보여줍니다. –

답변

2

나는이 예제는 당신에게 일반적인 전술을 보여 주어야한다고 생각 :이 예제 Rep78의에서

sysuse auto, clear 

bysort rep78: egen count_rep78 = count(rep78) 
gen freq_x_val = rep78*count_rep78 

browse rep78 count_rep78 freq_x_val 

는 범주 형 변수입니다.

기본적으로 bysort 단계에서 범주의 빈도 인 개수 변수를 만듭니다. 그런 다음 새로운 count 변수에 범주 형 변수를 곱하면 완료됩니다.

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