如何让 R 在表中包含列名?

问题描述

我希望 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

或使用 countdplyr :

library(dplyr)
mtcars %>% count(cyl,am)

输出格式与 table 不同,但它提供了关于哪个值来自哪个列的明确信息。