按所有列聚合字符矩阵

Aggregate character matrix by all columns

我是 R 的新手,所以我确信有一种简单的方法可以做到这一点,但运气不佳。

我在 运行 时有一个列数和行数未知的矩阵。我如何 return 计算具有匹配数据的行出现的次数?

如果我有矩阵 m:

names <- c("John","Bob","John","Sarah","Jill","Sarah","John")
ages <- c("25","36","25","30","55","30","55")
home <- c("USA","Canada","USA","Canada","USA","Canada","Mexico")

m <- data.matrix(cbind(names,ages,home))

如何return这种格式的数据?

+-------+------+--------+-------+
| names | ages |  home  | count |
+-------+------+--------+-------+
| John  |   25 | USA    |     2 |
| Bob   |   36 | Canada |     1 |
| Sarah |   30 | Canada |     2 |
| Jill  |   55 | USA    |     1 |
| John  |   55 | Mexico |     1 |
+-------+------+--------+-------+

你可以这样做:

library(data.table)
data.table(m)[,list(count=.N),by=list(names, ages, home)]

#        names ages   home count
#1:  John   25    USA     2
#2:   Bob   36 Canada     1
#3: Sarah   30 Canada     2
#4:  Jill   55    USA     1
#5:  John   55 Mexico     1