R table by matrix row

后端 未结 4 1308
一向
一向 2020-12-31 06:01

For a matrix (as.matrix), how can I generate a table where rows are equal to rows of the matrix?

>table(matrix)

and

&g         


        
4条回答
  •  -上瘾入骨i
    2020-12-31 06:30

    One alternative is to convert your matrix to a long data.frame (using stack), at which point you can easily use table:

    Here's your data:

    mymat <- structure(c(5L, 5L, 8L, 2L, 7L, 5L, 5L, 7L, 6L, 7L, 4L, 5L, 6L, 
                6L, 5L, 6L, 5L, 6L, 6L, 4L), .Dim = c(5L, 4L), .Dimnames = list(
                  c("a", "b", "c", "d", "e"), c("1", "2", "3", "4")))
    

    This is what it looks like as a long data.frame:

    head(stack(data.frame(t(mymat))))
    #   values ind
    # 1      5   a
    # 2      5   a
    # 3      4   a
    # 4      6   a
    # 5      5   b
    # 6      5   b
    

    Here's how we can use that to create the table you want:

    with(stack(data.frame(t(mymat))), table(ind, values))
    #    values
    # ind 2 4 5 6 7 8
    #   a 0 1 2 1 0 0
    #   b 0 0 4 0 0 0
    #   c 0 0 0 2 1 1
    #   d 1 0 0 3 0 0
    #   e 0 1 1 0 2 0
    

提交回复
热议问题