在table()中打印带有2个二进制变量的可变名称

时间:2015-11-25 15:11:27

标签: r

我确定我会因为无法解决这个问题而踢我自己,但是当你有一个包含2个变量的表(即交叉表)并且两者都是二进制或其他具有相同级别时,你怎么能使R显示哪个变量按行显示哪个变量按列显示?

例如:

> table(tc$tr, tc$fall_term)

       0    1
  0 1569  538
  1    0  408

有点令人困惑,因为它不是立即显而易见的。当然,我检查了?table,但我没有看到这样做的选项,至少没有一个逻辑开关不要求我已经知道哪个是哪个。

我尝试了ftable但遇到了同样的问题。

我想要的输出是这样的:

> table(tc$tr, tc$fall_term)
             tr    tr 
               0    1
fallterm     0 1569  538
fallterm     1    0  408

> table(tc$tr, tc$fall_term)
    fallterm    fallterm 
           0    1
tr     0 1569  538
tr     1    0  408

2 个答案:

答案 0 :(得分:4)

您可以使用dnn选项:

table(df$tr,df$fall_term) # impossible to tell the difference

     0  1
  0 18 33
  1 15 34

table(df$tr,df$fall_term,dnn=c('tr','fall_term')) # you have the names
   fall_term
tr   0  1
  0 18 33
  1 15 34

请注意,table(df$tr,df$fall_term,dnn=colnames(df))

更容易(也更安全)

答案 1 :(得分:1)

结帐dimnames,特别是names。我在这里使用另一个例子,因为我没有你的数据:

x = HairEyeColor[, , Sex = 'Male']

names(dimnames(x))
# [1] "Hair" "Eye"

names(dimnames(x)) = c('Something', 'Else')
x
#          Else
# Something Brown Blue Hazel Green
#     Black    32   11    10     3
#     Brown    53   50    25    15
#     Red      10   10     7     7
#     Blond     3   30     5     8