矩阵中矢量矢量的频率

时间:2015-04-07 14:56:08

标签: r vector

假设我在12x3矩阵中有以下内容

m<-rbind(c(0,7,0),c(1,1,5),c(6,1,1),c(1,3,-3),c(1,3,-3),c(1,1,5),
c(0,7,0),c(1,1,5),c(1,1,5),-c(0,7,0),c(1,1,5),c(1,3,-3))

并且想要计算每个行向量发生的次数。我该怎么办?

我尝试使用table(),但table()只计算元素。

3 个答案:

答案 0 :(得分:4)

您可以将每一行转换为连接字符串,然后使用表格。

m <- apply(m, 1, function(x) paste(x, collapse=" "))
table(m)

m

0 -7 0  0 7 0  1 1 5 1 3 -3  6 1 1 
     1      2      5      3      1 

答案 1 :(得分:2)

这是将源数据保存为列的替代方法。它使用“data.table”中的.N函数:

library(data.table)
as.data.table(m)[, .N, by = eval(paste0("V", seq_len(ncol(m))))]
#    V1 V2 V3 N
# 1:  0  7  0 2
# 2:  1  1  5 5
# 3:  6  1  1 1
# 4:  1  3 -3 3
# 5:  0 -7  0 1

答案 2 :(得分:1)

或转换为data.frame并使用do.call(paste

 table(do.call(paste, as.data.frame(m)))

 #0 -7 0  0 7 0  1 1 5 1 3 -3  6 1 1 
 #    1      2      5      3      1 

或使用sprintf

 table(do.call(sprintf, c(as.data.frame(m), '%d %d %d')))