2016-01-22 67 views
2

如何從SPSS中的矩陣中選擇列或行的子集?SPSS:從矩陣中選擇列或行的子集

考慮下面的例子,我想計算含X.

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矩陣子集操作語法的前兩列的矩陣X2?

回答

2

您可以對一個矩陣進行子集化,所以它會簡單地爲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. 

要在註釋中附加的問題,基本上1:n SPSS理解爲1 2 3 .... n行向量。您可以創建自己的矢量來對矩陣進行子集化,例如{1,3}{2,2}{3,1}或其他。最後一個例子將返回第三列第一列和第一列第二列的矩陣。下面的示例:

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 ----- 
+0

我知道這將比我提供的循環解決方案更簡單。多年來我一直沒有與「MATRIX」合作來記住它的所有功能。 –

+0

謝謝。一個附加問題,如果你不介意:)我如何選擇不相鄰的列,例如1和3? –

+1

已添加示例@MarkHeckmann。同樣的想法適用於選擇行。 –

1
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. 
+0

您可以子集矩陣,看到我的回答。無需循環。 –