【问题标题】:Plotting the result of R table with multiple columns绘制具有多列的 R 表的结果
【发布时间】:2021-07-30 19:31:47
【问题描述】:

我有一个包含 5 列 (col1-col5) 的“逻辑”类型的数据框 d。我想计算 5 列中 True 和 False 的所有组合的计数,所以我使用了

dt = table( cd$ol1, d$col2, d$col3, d$col4, d$col5 )

这给了我想要的答案,计算各行中 True 和 False 的每个组合:

> dt
, ,  = FALSE,  = FALSE,  = FALSE

       
         FALSE   TRUE
  FALSE    133    466
  TRUE       0      0

, ,  = TRUE,  = FALSE,  = FALSE

       
         FALSE   TRUE
  FALSE      7    675
  TRUE       0     62

, ,  = FALSE,  = TRUE,  = FALSE

       
         FALSE   TRUE
  FALSE     28    157
  TRUE       0     26

, ,  = TRUE,  = TRUE,  = FALSE

       
         FALSE   TRUE
  FALSE      0   3398
  TRUE       0   1596

, ,  = FALSE,  = FALSE,  = TRUE

       
         FALSE   TRUE
  FALSE     60     39
  TRUE       0      0

, ,  = TRUE,  = FALSE,  = TRUE

       
         FALSE   TRUE
  FALSE      6     16
  TRUE       0      4

, ,  = FALSE,  = TRUE,  = TRUE

       
         FALSE   TRUE
  FALSE     80   2063
  TRUE      10   1079

, ,  = TRUE,  = TRUE,  = TRUE

       
         FALSE   TRUE
  FALSE      5 124601

我现在想绘制结果。我意识到你可以这样做

> plot(dt)

这似乎做了正确的事,但它不是一个很好的情节。 有人可以推荐一种更好的方法来绘制具有多列的表的输出吗?

编辑: 将“data.table”更改为“table”-这是一个流浪的查找/替换,对此感到抱歉。 提供示例数据框:

d <- data.frame( id=c(1:10),col1=c(T,T,F,F,T,T,F,T,F,T),col2=c(F,T,T,F,F,T,F,T,F,T),col3=c(F,F,T,F,T,T,F,F,F,T),col4=c(T,T,F,F,T,F,T,T,F,T),col5=c(T,F,F,T,T,T,F,T,T,F) )

所以我正在寻找一些建议,以便对计算得到的真/假组合的结果进行良好的可视化

table( d$col1, d$col2, d$col3, d$col4, d$col5)

我从表操作中获得的数据正是我所需要的,我确信有一种方法可以绘制它,但我不确定哪种类型的绘图在这里可以很好地工作。谢谢!

【问题讨论】:

  • 你能告诉我们你的数据集吗?
  • 看起来您应该在问题(及其标题和标签)中将所有出现的“data.table”替换为“table”。
  • 哎呀,对不起,在那里寻找/替换...是的,它到处都是“table”而不是“data.table”。现已编辑。实际数据太长,无法在此处发布,但我会在一分钟内添加一个玩具示例。不过没什么可看的,只有一列 ID 和 5 列逻辑数据

标签: r plot


【解决方案1】:

也许library(vcd) 会有用?

d <-
  data.frame(
    id = c(1:10),
    col1 = c(T, T, F, F, T, T, F, T, F, T),
    col2 = c(F, T, T, F, F, T, F, T, F, T),
    col3 = c(F, F, T, F, T, T, F, F, F, T),
    col4 = c(T, T, F, F, T, F, T, T, F, T),
    col5 = c(T, F, F, T, T, T, F, T, T, F)
  )


library(vcd)
mosaic(col1 ~ col2|col3, data = d)

reprex package (v2.0.0) 于 2021 年 7 月 30 日创建

【讨论】:

    【解决方案2】:

    您基本上是在问如何绘制多维数据。你可以使用 ggplot2 和geom_bin_2d:

    library(ggplot2)
    ggplot(d,
           aes(x = col1, y = col2)) +
      geom_bin_2d() +
      facet_grid(interaction(col3, col4) ~ col5,
                 labeller = function(...) label_both(..., sep = "\n"))
    

    但是,只有两个维度,我看到的唯一选项是马赛克图。

    【讨论】:

    • 谢谢 Roland,很好的解决方案。我更喜欢 vcd 解决方案,但这也是一个很好的解决方案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    相关资源
    最近更新 更多