SPSS:select 矩阵中列或行的子集

SPSS: select a subset of columns or rows from a matrix

如何在 SPSS 中 select 矩阵中的列或行的子集?

给定以下示例,我想计算包含 X 的前两列的矩阵 X2。

MATRIX.

   COMPUTE 
   X = {1, 2, 2;
        0, -1, 1;
        1, 1, -2}.

   * Compute new matrix X2 that contains the first two columns of X

   MAGIC CODE ;)

END MATRIX.

SPSS 中矩阵子集运算的语法是什么?

MATRIX.
COMPUTE X = {1, 2, 3;  4, 5, 6;   7, 8, 9}.
COMPUTE Y=MAKE(NROW(X),2,0).
LOOP i=1 to NROW(Y).
  LOOP j=1 to NCOL(Y).
    COMPUTE Y(i,j)=X(i,j).
  END LOOP.
END LOOP.

PRINT X.
PRINT Y.
END MATRIX.

您可以对矩阵进行子集化,因此它只是 COMPUTE XSub = X(:,1:2). 下面的完整示例。

MATRIX.
COMPUTE X = {1, 2, 2;
             0, -1, 1;
             1, 1, -2}.
COMPUTE XSub = X(:,1:2).
PRINT XSub.
END MATRIX.

对于评论中的add-on问题,1:n基本上SPSS理解为1 2 3 .... n的一个行向量。不过,您可以创建自己的向量来对矩阵进行子集化,例如 {1,3}{2,2}{3,1} 或其他。最后一个示例将 return 子集矩阵中的第 3 列放在第一位,第一列放在第二位。下面的示例:

MATRIX.
COMPUTE X = {1, 2, 2;
             0, -1, 1;
             1, 1, -2}.
COMPUTE XSub = X(:,{3,1}).
PRINT XSub.
END MATRIX.

打印出

Run MATRIX procedure: 

XSUB 
  2  1 
  1  0 
 -2  1 

------ END MATRIX -----