【问题标题】:How can I create a histogram for all variables in a data set with minimal effort in R?如何在 R 中以最小的努力为数据集中的所有变量创建直方图?
【发布时间】:2012-06-28 23:45:42
【问题描述】:

探索新数据集:可视化许多(所有)变量的最简单、最快捷的方法是什么?

理想情况下,输出显示彼此相邻的直方图,具有最小的混乱和最大的信息。这个问题的关键是处理大型和不同数据集的灵活性和稳定性。我使用的是 RStudio,通常会处理大量杂乱的调查数据。

一个开箱即用的 Hmisc 示例在这里运行良好:

library(ggplot2)
str(mpg)

library(Hmisc)
hist.data.frame(mpg)

不幸的是,我在其他地方遇到了数据标签问题(plot.new() 中的错误:数字边距太大)。对于比mpg 更大的数据集,它也崩溃了,我还没有弄清楚如何控制分箱。此外,我更喜欢ggplot2 中的灵活解决方案。请注意,我刚开始学习 R,已经习惯了商业软件提供的舒适解决方案。

有关此主题的更多问题:

R histogram - too many variables

...?

【问题讨论】:

  • 为数据集中的每个变量制作图表对于小型数据集来说是很好的,但如果您有 3000 个变量,这只是一个非常糟糕的想法。这种情况下的正确答案是“不要那样做”。
  • 当然不是;这只是“混乱”的一个例子。
  • 感谢您在这里所做的努力,但您的问题根本没有描述具体的特定编程问题。相反,它感觉很像是会导致各种建议的杂乱无章的答案,而不是一个明确的答案。确实,当我阅读您的回答时,我对您的标准比以前更加困惑。

标签: r ggplot2 histogram


【解决方案1】:

可能有三种广泛的方法:

  1. 来自hist.data.frame()等包的命令
  2. 循环变量或类似的宏结构
  3. 堆叠变量和使用构面

其他可能有用的可用命令:

library(plyr)
library(psych)
multi.hist(mpg) #error, not numeric
multi.hist(mpg[,sapply(mpg, is.numeric)])

或者可能来自plotrixmulthist,我还没有探索过。它们都没有提供我想要的灵活性。

循环

作为 R 初学者,每个人都建议我远离循环。所以我做到了,但也许在这里值得一试。任何建议都非常受欢迎。也许您可以评论一下如何将这些图表合并到一个文件中。

堆叠

我的第一个怀疑是堆叠变量可能会失控。但是,对于一组合理的变量,这可能是最佳策略。

我想出的一个例子使用了melt 函数。

library(reshape2)
mpgid <- mutate(mpg, id=as.numeric(rownames(mpg)))
mpgstack <- melt(mpgid, id="id")
pp <- qplot(value, data=mpgstack) + facet_wrap(~variable, scales="free")
# pp + stat_bin(geom="text", aes(label=..count.., vjust=-1))
ggsave("mpg-histograms.pdf", pp, scale=2)

(如您所见,我尝试在条形上放置值标签以获得更多信息密度,但效果不佳。x 轴上的标签也不太理想。)

这里没有完美的解决方案,也不会有一刀切的命令。但也许我们可以更轻松地探索新数据集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2020-08-10
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多