Stata:将矩阵转换为数据集而不丢失名称
Stata: convert a matrix to dataset without losing names
以前有人问过这个问题,但答案似乎不适用于此处。我想从我的回归输出中制作一个数据集,而不会丢失信息。考虑:
clear *
input str3 iso3 var1 var2 var3
GBR 10 13 15
USA 9 7 4
FRA 8 8 7
BEL 3 4 5
end
local vars var2 var3
reg var1 var2 var3
matrix A=r(table)
matrix list A
clear
xsvmat A, names(col) norestore
Stata 抱怨 _cons
列的地方。我对这个专栏不感兴趣(虽然我也不明白为什么包含它是个问题)但是我在 xsvmat
、[=13= 中找不到解决这个问题的选项] 或 svmat2
帮助。
虽然 Stata 变量名通常可以以下划线开头 _
,[U] 11.3 命名约定 解释说 _cons
是保留名称,并且它们不能用作变量名。
我想你想要这个:
clear
set more off
input ///
str3 iso3 var1 var2 var3
GBR 10 13 15
USA 9 7 4
FRA 8 8 7
BEL 3 4 5
end
local vars var2 var3
reg var1 var2 var3
matrix A = r(table)
// get original row names of matrix (and row count)
local rownames : rowfullnames A
local c : word count `rownames'
// get original column names of matrix and substitute out _cons
local names : colfullnames A
local newnames : subinstr local names "_cons" "cons", word
// rename columns of matrix
matrix colnames A = `newnames'
// convert to dataset
clear
svmat A, names(col)
// add matrix row names to dataset
gen rownames = ""
forvalues i = 1/`c' {
replace rownames = "`:word `i' of `rownames''" in `i'
}
// check
order rownames
list, sep(0)
使用了扩展宏函数。如果您不熟悉它们,请参阅 help extended_fcn
。
另见this answer,非常相似,建议postfile
和statsby
。
最后,检查 ssc describe estout
,如果您的目标是输出回归表。
以前有人问过这个问题,但答案似乎不适用于此处。我想从我的回归输出中制作一个数据集,而不会丢失信息。考虑:
clear *
input str3 iso3 var1 var2 var3
GBR 10 13 15
USA 9 7 4
FRA 8 8 7
BEL 3 4 5
end
local vars var2 var3
reg var1 var2 var3
matrix A=r(table)
matrix list A
clear
xsvmat A, names(col) norestore
Stata 抱怨 _cons
列的地方。我对这个专栏不感兴趣(虽然我也不明白为什么包含它是个问题)但是我在 xsvmat
、[=13= 中找不到解决这个问题的选项] 或 svmat2
帮助。
虽然 Stata 变量名通常可以以下划线开头 _
,[U] 11.3 命名约定 解释说 _cons
是保留名称,并且它们不能用作变量名。
我想你想要这个:
clear
set more off
input ///
str3 iso3 var1 var2 var3
GBR 10 13 15
USA 9 7 4
FRA 8 8 7
BEL 3 4 5
end
local vars var2 var3
reg var1 var2 var3
matrix A = r(table)
// get original row names of matrix (and row count)
local rownames : rowfullnames A
local c : word count `rownames'
// get original column names of matrix and substitute out _cons
local names : colfullnames A
local newnames : subinstr local names "_cons" "cons", word
// rename columns of matrix
matrix colnames A = `newnames'
// convert to dataset
clear
svmat A, names(col)
// add matrix row names to dataset
gen rownames = ""
forvalues i = 1/`c' {
replace rownames = "`:word `i' of `rownames''" in `i'
}
// check
order rownames
list, sep(0)
使用了扩展宏函数。如果您不熟悉它们,请参阅 help extended_fcn
。
另见this answer,非常相似,建议postfile
和statsby
。
最后,检查 ssc describe estout
,如果您的目标是输出回归表。