假设我在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()
只计算元素。
答案 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')))