我有一个矩阵(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是一个(相当大的)矩阵,由于内存问题,我希望尽可能避免转换它。
答案 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")))