按所有列聚合字符矩阵
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
我是 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