2017-09-11 5 views
0

Ich habe eine kategoriale Variable und versuche, eine neue Variable zu berechnen, die jede Antwort mit ihrer Häufigkeit multipliziert. Ex:Variable in Stata generieren?

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

Ich mag eine Variable haben, der die Summe darstellt n für jede Antwort (d.h. 1 = 6, 2 = 24, 3 = 27, etc.). Ich habe ein paar Berechnungen mit Egen gemacht, aber sie schienen nicht zu funktionieren. Bitte lassen Sie mich wissen, wenn jemand einen Einblick hat.

+1

Immer Codeversuche anzeigen. –

Antwort

2

Ich denke, dass dieses Beispiel Ihnen die allgemeine Taktik zeigen soll:

sysuse auto, clear 

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

browse rep78 count_rep78 freq_x_val 

In diesem Beispiel rep78 die kategorische Variable ist.

Im Wesentlichen erstellen Sie eine Zählvariable, die die Häufigkeit der Kategorie im Schritt bysort darstellt. Dann multiplizierst du deine neue Zählvariable mit der kategorialen Variablen und du bist fertig.

2

Es ist nicht klar, ob Sie die Daten im ursprünglichen Datensatz haben möchten oder einen neuen möchten. Dieser Code erfüllt beides:

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