Matrix 如何在Stata上创建二维矩阵

Matrix 如何在Stata上创建二维矩阵,matrix,stata,Matrix,Stata,如果下面的问题不是关于“二维”矩阵,那么很抱歉,但我认为二维矩阵就是这样定义的 我试图创建一个矩阵,在这里我想要一个收入五分位数的变量“X”的平均值。我为X创建了矩阵,如下所示: tabstat X [aw=weight] if location==1 & own==1, by(inc_quint) save tabstatmat X, nototal return list matrix urbown = (r(Stat1) \ r(Stat2) \ r(Stat3) \ r(

如果下面的问题不是关于“二维”矩阵,那么很抱歉,但我认为二维矩阵就是这样定义的

我试图创建一个矩阵,在这里我想要一个收入五分位数的变量“X”的平均值。我为X创建了矩阵,如下所示:


tabstat X [aw=weight] if location==1 & own==1, by(inc_quint) save

tabstatmat X, nototal

return list

matrix urbown = (r(Stat1) \ r(Stat2) \ r(Stat3) \ r(Stat4) \ r(Stat5))

matrix rownames urbown = `r(name1)' `r(name2)' `r(name3)' `r(name4)' `r(name5)'

matrix list urbown

svmat urbown

这为变量X创建了矩阵,但当我按收入五分位数对数据进行排序时,它不会按五分位数给我数据,因此我想知道如何在矩阵中也包括五分位数。任何帮助或提示都会很有帮助

所有矩阵都有行和列,即使其中一个矩阵的数目为1。所有的矩阵都是二维的。你想要的只是一张特殊的(单向)桌子。虽然您的代码以
svmat
结尾,但您并没有详细说明为什么需要矩阵:需要Stata矩阵的主要原因是为了进一步操作它

有许多方法可以将手段表转换为适合进一步使用的形式。这里有一个:使用
collapse
获取新的数据集。这个例子有点做作,但表明没有什么可以排除的,比如在代码中,(1)权重(2)一个
if
限定符,以及(0)使用五向分解,或类似的方法

. sysuse auto, clear
(1978 Automobile Data)

. collapse price [aw=weight] if !foreign, by(rep78)

. list

     +-----------------+
     | rep78     price |
     |-----------------|
  1. |     1   4,608.6 |
  2. |     2   6,230.2 |
  3. |     3   7,142.2 |
  4. |     4   6,099.9 |
  5. |     5   4,186.5 |
     |-----------------|
  6. |     .     4,758 |
     +-----------------+

虽然我认为你想要的足够清楚,但这不是一个可复制的例子。Stata tag wiki提供了关于显示我们可以运行的代码的非常详细的建议。感谢您提供的代码。我想我应该提到,我希望各种矩阵(取决于假人自己的位置)附加不同的数据集,然后使用它们生成特定的变量。这就是为什么我没有考虑崩溃的原因。所以这是一个不同的问题。我想如果我把我需要的数据保存为矩阵(如果有可能用2个变量创建矩阵:在我的情况下,使用x和x),然后附加/合并另一个数据,它就可以完成这项工作。我知道有多种方法可以做到这一点,但知道如何创建包含2个变量的矩阵会对我很有帮助。我建议你用一个可复制的例子问一个不同的问题。