在 table() 中使用 R 中的 2 个二进制变量打印可变名称

Print varible names in table() with 2 binary variables in R

提问人:Hack-R 提问时间:11/25/2015 最后编辑:Hack-R 更新时间:11/25/2015 访问量:56

问:

我敢肯定我会因为无法弄清楚这一点而自责,但是当您有一个包含 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
r

评论

0赞 akrun 11/25/2015
预期的输出是多少?如果您需要一些标签,请在执行之前使用创建唯一标识符,或者您可能需要等。pastetablenames(dimnames(tbl)) <- list('row', 'col')
2赞 etienne 11/25/2015
您是否尝试使用以下选项:?dnndnn=c('tr','fall_term')
0赞 Hack-R 11/25/2015
@etienne可能会起作用,但我不知道该为这些值加上什么dnn
0赞 Hack-R 11/25/2015
@akrun我会在问题中添加预期的输出,谢谢
0赞 Konrad Rudolph 11/25/2015
@etienne 回答这个问题,我不知道那个选项。

答:

1赞 Konrad Rudolph 11/25/2015 #1

查看 ,尤其是他们的 .我在这里使用另一个例子,因为我没有你的数据:dimnamesnames

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

评论

0赞 Hack-R 11/25/2015
当您在具有 2 列以上的数据帧中使用 2 列时,我认为这不起作用(我不想停下来创建一个新对象或命名我的许多列中的每一列)。
0赞 Hack-R 11/26/2015
> dimnames(tc$tr) <- list(“tr”) dimnames(tc$tr) 中的错误 <- list(“tr”) : 'dimnames' 应用于非数组 > dimnames(tc$tr, tc$fall_term) <- list(“tr”, “fall_term”) dimnames<-(tmp, tc$fall_term, value = list(“tr”, “fall_term”)) 中的错误:传递给“dimnames<-”的 3 个参数,需要 2 个
0赞 Konrad Rudolph 11/27/2015
@Hack-R 再看我的回答:你需要用,而不仅仅是.但这仍然不起作用,因为您将其应用于错误的对象:没有输出表。当你遇到这样的错误时,你的第一反应应该是检查有问题的对象——这会告诉你为什么不起作用。names(dimnames(x))dimnames(x)tc$trdimnamesdimnames(tc$tr)
4赞 etienne 11/25/2015 #2

您可以使用以下选项: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))