【问题标题】:Two-way frequency table row and column labels双向频率表行列标签
【发布时间】:2017-04-16 05:37:36
【问题描述】:

我想设置table() 的输出样式。假设我有以下内容:

dat$a <- c(1,2,3,4,4,3,4,2,2,2)
dat$b <- c(1,2,3,4,1,2,4,3,2,2)
table(dat$a,dat$b)

    1   2   3   4
1  50   0   0   0
2   0 150  50   0
3   0  50  50   0
4  50   0   0 100

这有两个问题。首先,它没有给我正确的频率。此外,它没有行或列标签。我找到了this,该表适用于频率计数和轴标签。是否存在问题,因为这种方式来自数据框的子集?我将不胜感激有关固定频率计数和向表格添加样式的任何提示。

【问题讨论】:

  • 你有多少个nrow(dat)
  • 如果您使用with(dat,table(a,b))table(a=dat$a,b=dat$b)table(dat[,c("a","b")]),则会标记边距。我不知道为什么你的频率是关闭的。对于您给出的示例,频率应该只是您显示的计数的 1/50。
  • dat 可能是一个 500 行的数据框,已通过回收填充。
  • 我确实有 500 行,我在我的程序中运行它,它给了我正确的频率(所以这不再是问题了)。我尝试做table(dat[,c("a","b")]),但仍然没有得到任何标签。如果它有所作为,我将使用 renderTable 以闪亮的方式运行它。
  • 我重新格式化了我的问题并发布了here

标签: r frequency


【解决方案1】:

唯一的问题是您向table 输入参数的方式。要获得所需的输出(带有标签),请使用数据框作为参数,而不是 2 个向量(列)。如果您有更大的数据框,请仅使用您想要的子集。

 a <- c(1,2,3,4,4,3,4,2,2,2)
 b <- c(1,2,3,4,1,2,4,3,2,2)
 dat <- data.frame(a,b)
 table(dat)

给我输出:

   b
a   1 2 3 4
  1 1 0 0 0
  2 0 3 1 0
  3 0 1 1 0
  4 1 0 0 2

它不应该给出错误的频率,即使是你的方法。您可以尝试重新启动您的 R 会话来检查这一点。

【讨论】:

  • 当我尝试时,我做了a &lt;- dat$ab &lt;- dat$b 然后table(a,b) 它给了我正确的频率,但仍然没有标签。这是你的意思吗?
  • 这仍然只是给了我没有标签的表格。反正有手动添加它们吗?如果有什么不同,我会在 Shiny 中使用 renderTable。
  • @KiraTebbe 是的,在 Shiny 中使用 renderTable 会有所不同。我建议您使用更详细的代码打开另一个问题,可能发布您的 ui.Rserver.R 代码,或其中的一部分。如果我们没有相同的条件,我们将无法重现您的问题。
  • 我重新格式化了我的问题并发布了here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
相关资源
最近更新 更多