在Matrix中获得两个分类器的比例

时间:2015-04-05 08:04:45

标签: r matrix

我有一个矩阵(myData)数据,例如:

      L   SCORE
[1,] "nL" 1                
[2,] "nL" 4                
[3,] "L"  4                
[4,] "L"  4                
[5,] "nL" 3                
[6,] "nL" 9   
...
...

等等。

我想得一个关于分数的“L”和“nL”案例。目标输出类似于:

     SCORE LCount nLCount 
[1,]  1       0      1
[2,]  4       2      1   
[3,]  3       0      1              
[4,]  9       0      1
...

我怎样才能实现这一目标?我尝试使用table(myData),但这不会产生所需的结果(我得到一个基于Score的计数,但没有分成“L”和“nL”)。 我觉得我错过了一些相当微不足道的东西。 如何获得“L”和“nL”的计数? 目前,myData是一个(相当大的)矩阵,由于内存问题,我希望尽可能避免转换它。

2 个答案:

答案 0 :(得分:2)

好的,回答发现,毕竟是桌子()。 只需使用:

table(myData[,1], myData[,2])

中提琴。

-Ruslan

答案 1 :(得分:1)

你也可以使用data.table(记住矩阵是一种类型,所以你的初始矩阵只有字符):

library(data.table)
library(reshape2)

dcast(setDT(as.data.frame(m))[,.(count=.N),.(SCORE, L)], SCORE~L, value.var='count')
#  SCORE  L nL
#1     1 NA  1
#2     3 NA  1
#3     4  2  1
#4     9 NA  1

数据

m=structure(c("nL", "nL", "L", "L", "nL", "nL", "1", "4", "4", 
"4", "3", "9"), .Dim = c(6L, 2L), .Dimnames = list(NULL, c("L", 
"SCORE")))