Stata:将矩阵转换为数据集而不丢失名称

Stata:将矩阵转换为数据集而不丢失名称,stata,Stata,这个问题以前有人问过,但这里的答案似乎不适用。我想从我的回归输出中创建一个数据集,而不会丢失信息。考虑: 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

这个问题以前有人问过,但这里的答案似乎不适用。我想从我的回归输出中创建一个数据集,而不会丢失信息。考虑:

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抱怨
\u cons
列。我对这个专栏不感兴趣(虽然我也不明白为什么要把它包括进来会有这么大的问题),但在
xsvmat
svmat
svmat2
帮助中,我找不到解决这个问题的方法。

尽管Stata变量名通常可以以下划线开头11.3命名约定说明
\u 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)
使用扩展宏函数。如果您不熟悉它们,请参阅
帮助扩展\u fcn

另请参见,它非常类似,建议使用
postfile
statsby


最后,如果您的目标是输出回归表,请勾选“ssc描述estout”。

您所说的“不丢失信息”到底是什么意思?这不是在内存中丢失数据集吗?我冒昧地更改了一些措辞(包括标题),以便更容易理解。如果我误解了什么,你可以将更改回滚。