【问题标题】:Simplify into a loop简化成一个循环
【发布时间】:2015-07-03 19:39:16
【问题描述】:

我在将某些东西简化成一个闭环时遇到了一些困难。我正在尝试计算 7 年内 213 个国家/地区的 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
}

谢谢!!

【问题讨论】:

标签: for-loop stata


【解决方案1】:

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

你试过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 的主要麻烦。

【讨论】:

    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2015-09-09
    • 2012-04-04
    • 2018-04-11
    • 2016-03-06
    相关资源
    最近更新 更多