【问题标题】:How to force table to have equal dimensions?如何强制表格具有相同的尺寸?
【发布时间】:2017-04-30 06:00:01
【问题描述】:

如何在 R 中强制表格的尺寸相等?

例如:

a <- c(0,1,2,3,4,5,1,3,4,5,3,4,5)
b <- c(1,2,3,3,3,3,3,3,3,3,5,5,6)
c <- table(a,b)

print(c)
#   b
#a   1 2 3 5 6
#  0 1 0 0 0 0
#  1 0 1 1 0 0
#  2 0 0 1 0 0
#  3 0 0 2 1 0
#  4 0 0 2 1 0
#  5 0 0 2 0 1

但是,我正在寻找以下结果:

print(c)
#   b
#a   0 1 2 3 4 5 6
#  0 0 1 0 0 0 0 0
#  1 0 0 1 1 0 0 0
#  2 0 0 0 1 0 0 0
#  3 0 0 0 2 0 1 0
#  4 0 0 0 2 0 1 0
#  5 0 0 0 2 0 0 1
#  6 0 0 0 0 0 0 0

【问题讨论】:

  • 你用的是什么语言?!
  • 我们什么时候选择人们可以使用的赋值运算符以及如何(不必要地)使用print函数@AEBilgrau?
  • @rawr 对不起。我不知道这被认为是不礼貌或冒犯。我发现 = 在所有 R 风格指南中都被一致反对为赋值运算符,原因有很多。添加print(并删除提示&gt;)和注释输出只是为了使代码更具可读性(并且更易于复制),因为ab作为维度名称出现在对象c。我应该并且可以恢复吗?

标签: r


【解决方案1】:

通过使用因素。 table 不知道变量的级别,除非您以某种方式告诉它!

a <- c(0,1,2,3,4,5,1,3,4,5,3,4,5)
b <- c(1,2,3,3,3,3,3,3,3,3,5,5,6)

a <- factor(a, levels = 0:6)
b <- factor(b, levels = 0:6)
table(a,b)
#   b
#a   0 1 2 3 4 5 6
#  0 0 1 0 0 0 0 0
#  1 0 0 1 1 0 0 0
#  2 0 0 0 1 0 0 0
#  3 0 0 0 2 0 1 0
#  4 0 0 0 2 0 1 0
#  5 0 0 0 2 0 0 1
#  6 0 0 0 0 0 0 0

编辑强制方形交叉制表的一般方法是执行类似的操作

x <- factor(a, levels = union(a, b))
y <- factor(b, levels = union(a, b))
table(x, y)

【讨论】:

  • 太棒了,这很有魅力,我很欣赏union() 的想法。
猜你喜欢
  • 1970-01-01
  • 2020-08-15
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多