【问题标题】:Stata: convert a matrix to dataset without losing namesStata:将矩阵转换为数据集而不丢失名称
【发布时间】:2015-09-10 10:15:07
【问题描述】:

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

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 列的地方。我对这个专栏不感兴趣(虽然我也不明白为什么包含它是个问题)但我在xsvmatsvmat 或@987654325 中找不到解决这个问题的选项@帮助。

【问题讨论】:

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

标签: stata


【解决方案1】:

虽然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,非常相似,建议postfilestatsby

最后,检查ssc describe estout,如果您的目标是输出回归表。

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 2016-02-01
    • 2014-10-13
    • 2012-07-10
    • 2012-06-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多