问题描述
我希望 R 生成一个表格,比较数据集中的两列。这些列的值相同(0 和 1),所以我不知道哪些数字对应哪些变量。我知道有一种方法可以为 R 提供列名,但是因为我不知道哪些行和列对应于哪些数字,所以我担心这样做可能会错误地标记另一个。
这是 R 给我的表。我希望它在顶部和左侧标记变量。
0 1
0 593 185
1 322 122
解决方法
您可以为 table
函数的输出指定行名和列名以区分它们。
例如
mat <- table(mtcars$cyl,mtcars$am)
rownames(mat) <- paste0('cyl = ',rownames(mat))
colnames(mat) <- paste0('am = ',colnames(mat))
mat
# am = 0 am = 1
# cyl = 4 3 8
# cyl = 6 4 3
# cyl = 8 12 2
如果您不想为输出分配这样的名称,您可以使用 aggregate
。
mtcars$N <- 1:nrow(mtcars)
aggregate(N~cyl+am,mtcars,length)
# cyl am N
#1 4 0 3
#2 6 0 4
#3 8 0 12
#4 4 1 8
#5 6 1 3
#6 8 1 2
或使用 count
的 dplyr
:
library(dplyr)
mtcars %>% count(cyl,am)
输出格式与 table
不同,但它提供了关于哪个值来自哪个列的明确信息。