Matrix 使用列名对矩阵的列进行子集设置

Matrix 使用列名对矩阵的列进行子集设置,matrix,subset,stata,Matrix,Subset,Stata,如果这是一个基本问题,我很抱歉,但无论是在这里还是在Stata手册(第14章,“矩阵表达式”)上,我都找不到任何解决方案 我的目标是使用列名对矩阵进行子集划分。 我的初始矩阵A如下所示: mat A = (1,2,3\4,5,6\7,8,9) mat rownames A = "row a" "row b" "row c" mat colnames A = "col x" "col y" "col z" mat list A 我需要使用列名col x和col z创建一个由第一列和最后一列组成

如果这是一个基本问题,我很抱歉,但无论是在这里还是在Stata手册(第14章,“矩阵表达式”)上,我都找不到任何解决方案

我的目标是使用列名对矩阵进行子集划分。 我的初始矩阵
A
如下所示:

mat A = (1,2,3\4,5,6\7,8,9)
mat rownames A = "row a" "row b" "row c"
mat colnames A = "col x" "col y" "col z"

mat list A
我需要使用列名
col x
col z
创建一个由第一列和最后一列组成的矩阵。 我能做的“最接近”的事情是:

mat B = A[.,"col x".."col z"]
这显然是错误的。任何其他尝试都会导致矩阵
B
仅由第一列组成。 我在这里遗漏了什么?

一个方法是:

mat A = (1,2,3\4,5,6\7,8,9)
mat rownames A = "row a" "row b" "row c"
mat colnames A = "col x" "col y" "col z"
matrix list A

matrix B = A[1...,colnumb(A,"col x")], A[1...,colnumb(A,"col z")]
matrix list B
这将提取
“col x”
“col z”
的所有行,并使用列联接运算符
(逗号)将它们放在一起

另一个是:

matrix C = A["row a".."row c" , "col x"], A["row a".."row c" , "col z"]
还有一个:

matrix D = A[1... , "col x"], A[1... , "col z"]
另请参见Stata的矩阵编程语言,Mata
帮助Mata
)。它更复杂,但功能更强大。

一种方法是:

mat A = (1,2,3\4,5,6\7,8,9)
mat rownames A = "row a" "row b" "row c"
mat colnames A = "col x" "col y" "col z"
matrix list A

matrix B = A[1...,colnumb(A,"col x")], A[1...,colnumb(A,"col z")]
matrix list B
这将提取
“col x”
“col z”
的所有行,并使用列联接运算符
(逗号)将它们放在一起

另一个是:

matrix C = A["row a".."row c" , "col x"], A["row a".."row c" , "col z"]
还有一个:

matrix D = A[1... , "col x"], A[1... , "col z"]
另请参见Stata的矩阵编程语言,Mata
帮助Mata
)。它更复杂,但功能更强大。

一种方法是:

mat A = (1,2,3\4,5,6\7,8,9)
mat rownames A = "row a" "row b" "row c"
mat colnames A = "col x" "col y" "col z"
matrix list A

matrix B = A[1...,colnumb(A,"col x")], A[1...,colnumb(A,"col z")]
matrix list B
这将提取
“col x”
“col z”
的所有行,并使用列联接运算符
(逗号)将它们放在一起

另一个是:

matrix C = A["row a".."row c" , "col x"], A["row a".."row c" , "col z"]
还有一个:

matrix D = A[1... , "col x"], A[1... , "col z"]
另请参见Stata的矩阵编程语言,Mata
帮助Mata
)。它更复杂,但功能更强大。

一种方法是:

mat A = (1,2,3\4,5,6\7,8,9)
mat rownames A = "row a" "row b" "row c"
mat colnames A = "col x" "col y" "col z"
matrix list A

matrix B = A[1...,colnumb(A,"col x")], A[1...,colnumb(A,"col z")]
matrix list B
这将提取
“col x”
“col z”
的所有行,并使用列联接运算符
(逗号)将它们放在一起

另一个是:

matrix C = A["row a".."row c" , "col x"], A["row a".."row c" , "col z"]
还有一个:

matrix D = A[1... , "col x"], A[1... , "col z"]

另请参见Stata的矩阵编程语言,Mata
帮助Mata
)。它更复杂,但功能更强大。

谢谢您的解释。我已经开始研究Mata了,我认为在这方面投入时间是绝对值得的。非常感谢您的支持!谢谢你的解释。我已经开始研究Mata了,我认为在这方面投入时间是绝对值得的。非常感谢您的支持!谢谢你的解释。我已经开始研究Mata了,我认为在这方面投入时间是绝对值得的。非常感谢您的支持!谢谢你的解释。我已经开始研究Mata了,我认为在这方面投入时间是绝对值得的。非常感谢您的支持!