2015-07-03 76 views
1

我在将某些东西简化为闭环时遇到了一些困难。我试图计算213个国家7年中的6个不同变量的平均值,中位数,最大值,最小值和标准偏差。简化为一个循环

我想知道是否有一种方法可以创建一个循环来计算每个变量的平均值,中位数等。

这是我到现在为止。

forvalues x=1/213 { 
use Base_T03.dta, clear 
egen trend=fill(1/1491) 
drop if trend <7*(`x'-1)+1 | trend > 7*(`x') 

gen str variable="" 
replace variable="consumption_growth" in 1 
replace variable="gov_expo_growth" in 2 
replace variable="exports_growth" in 3 
replace variable="imports_growth" in 4 
replace variable="gdp_growth" in 5 
replace variable="population_growth" in 6 

egen m1= mean (consumption_growth) 
egen m2= mean (gov_expo_growth) 
egen m3= mean (exports_growth) 
egen m4= mean (imports_growth) 
egen m5= mean (gdp_growth) 
egen m6= mean (population_growth) 

gen Mean = . 
replace Mean=m1 in 1 
replace Mean=m2 in 2 
replace Mean=m3 in 3 
replace Mean=m4 in 4 
replace Mean=m5 in 5 
replace Mean=m6 in 6 

drop m* 

egen m1= median (consumption_growth) 
egen m2= median (gov_expo_growth) 
egen m3= median (exports_growth) 
egen m4= median (imports_growth) 
egen m5= median (gdp_growth) 
egen m6= median (population_growth) 

gen Median = . 
replace Median=m1 in 1 
replace Median=m2 in 2 
replace Median=m3 in 3 
replace Median=m4 in 4 
replace Median=m5 in 5 
replace Median=m6 in 6 

drop m* 

egen m1= max (consumption_growth) 
egen m2= max (gov_expo_growth) 
egen m3= max (exports_growth) 
egen m4= max (imports_growth) 
egen m5= max (gdp_growth) 
egen m6= max (population_growth) 

gen Max = . 
replace Max=m1 in 1 
replace Max=m2 in 2 
replace Max=m3 in 3 
replace Max=m4 in 4 
replace Max=m5 in 5 
replace Max=m6 in 6 

drop m* 

egen m1= min (consumption_growth) 
egen m2= min (gov_expo_growth) 
egen m3= min (exports_growth) 
egen m4= min (imports_growth) 
egen m5= min (gdp_growth) 
egen m6= min (population_growth) 

gen Min = . 
replace Min=m1 in 1 
replace Min=m2 in 2 
replace Min=m3 in 3 
replace Min=m4 in 4 
replace Min=m5 in 5 
replace Min=m6 in 6 

drop m* 

egen m1= sd (consumption_growth) 
egen m2= sd (gov_expo_growth) 
egen m3= sd (exports_growth) 
egen m4= sd (imports_growth) 
egen m5= sd (gdp_growth) 
egen m6= sd (population_growth) 

gen Desvest = . 
replace Desvest=m1 in 1 
replace Desvest=m2 in 2 
replace Desvest=m3 in 3 
replace Desvest=m4 in 4 
replace Desvest=m5 in 5 
replace Desvest=m6 in 6 

drop m* trend 
drop if variable=="" 
drop consumption* gov_expo* exports* imports* gdp* population* year 
save Tabla_`x'.dta, replace 
} 

谢谢!

+1

请记住,请[给予适当的反馈意见](http://stackoverflow.com/help/someone-answers)给你收到的答案。在http://stackoverflow.com/questions/30007457/a-new-chart-every-sheet上,您仍然有明显的反馈意见。 –

回答

2

这里你不需要循环,因为在许多情况下你不需要使用不同语言的循环。

你试过collapse

clear 
set more off 

input /// 
country time gdp popul 
1 1 63 29 
1 2 68 30 
1 3 69 34 
2 1 88 40 
2 2 87 43 
2 3 87 45 
end 

*----- 

collapse (mean) mgdp=gdp mpop=popul (median) medgdp=gdp medpop=popul, by(country) 

format %9.2f *gdp *pop 
list, noobs 

最好你早点认真阅读User's Guide。这将为您节省Stata带来的重大麻烦。