在函数中子集矩阵值

时间:2019-02-05 14:21:37

标签: r function loops matrix

我有一个非常棘手的问题,在这里似乎找不到任何类似的东西。

首先,是一个可重现的示例:

ID     code.X    code.Y
1         a         b
2         a         a
3         b         b 
4         a         a 
5         c         c 
6         c         a 
7         a         a 
8         a         b 
9         c         c
10        c         c 

我有一个ID变量和两列包含分类代码(a,b,c)的列,并使用

创建了一个3x3表或列联矩阵/交叉表
 X <- table(code.X, code.Y) 
 X

                        code.Y

                   a      b      c         total 
                ¦-------------------
              a ¦  3      2      0         5
                ¦           
   code.Y     b ¦  0      1      0         1 
                ¦
              c ¦  1      0      3         4


                   4      3      3         10 

我希望能够在下一步中使用值X [i,j]以及每一行和每一列的总计,在此它们将被细分为一个函数。

我的下一步是使用上面显示的值和总计创建一个新的矩阵。因此,我将拥有另一个矩阵,其中X [i,j]将使用上面矩阵中的值。

我希望能够使用值X [i,j]并将其替换为公式以创建新矩阵。例如,我可能想将X [i,j]除以列或行的总和。 我当时在想有两个循环:(请原谅废话,只是想重现一个主意)

 for i in length(levels(code.x)){

       for j in length(levels(code.y)){ 


        X2[i, j] = X[i,j] * margin(X[1, j])

 }}

这个可重现的示例很简单,因为表格只有3x3,但是如果我们添加更多的分类变量,我们可能会得到一个非常大的矩阵,并且我希望能够自动化该过程以节省时间。

我还考虑过从表中提取值以创建

格式的数据框
ID          Value 

X[1, 1]        3
X[1, 2]        2
X[1, 3]        0 
X[2, 1]        0
X[2, 2]        1
X[2, 3]        0 
X[3, 1]        1 
X[3, 2]        0 
X[3, 3]        3 

任何帮助将不胜感激,在此先感谢您。

0 个答案:

没有答案