【问题标题】:age range display in Histogram (in R)直方图中的年龄范围显示(R)
【发布时间】:2019-12-12 07:46:44
【问题描述】:

很抱歉问了一个非常简单的问题,我是 R 新手,我正在尝试从一组数据中制作直方图,如图所示。但是,当我尝试制作直方图时,它反而显示了这一点。我的问题是可以将 x 轴标签更改为我的数据集的范围吗?是否可以根据范围制作直方图?

非常感谢任何帮助。

【问题讨论】:

  • 欢迎来到 SO !请PLEASE不要放置您的数据的图片。制作reproducible example 可以更轻松地为您提供帮助。
  • 哦。谢谢你的建议,我会注意的。

标签: r histogram


【解决方案1】:

你的向量age本质上是一个因子向量。 因此,您可以计算因子的每个级别并将它们绘制为直方图,而不是尝试绘制它的密度。

为此,您可以使用dplyrggplot2

library(dplyr)
data.frame(age) %>% group_by(age) %>% count(age) 

# A tibble: 3 x 2
# Groups:   age [3]
  age       n
  <fct> <int>
1 19-25     9
2 26-32    15
3 33-39     4

现在,如果您将此输出与ggplot2 组合,您可以获得:

library(dplyr)
library(ggplot2)
data.frame(age) %>% group_by(age) %>% count(age) %>%
  ggplot(aes(x = age, y = n)) + geom_bar(stat = "identity")

您会得到以下直方图:


使用基础 R

根据@RoB 的好建议,您可能会很高兴知道如何使用 R base plot。

所以你可以这样实现:

library(dplyr)
df <- data.frame(age) %>% group_by(age) %>% count(age)
barplot(df$n)
axis(side = 1, at = 1:3, labels = df$age)

编辑:基本图形的替代方案

实际上,您甚至可以更快地绘制因子age 的各个级别的直方图,而无需axis 函数或dplyr 包,方法是:

barplot(table(age))

它回答了你的问题吗?

数据

age = c("19-25","19-25","26-32","26-32","26-32","26-32","26-32","26-32","26-32",
        "33-39","19-25","19-25","26-32","19-25","19-25","26-32","19-25","26-32",
        "26-32","19-25","26-32","33-39","26-32","19-25","26-32","33-39","33-39","26-32")

【讨论】:

  • 好答案,我很佩服你花时间输入这些数据!由于 OP 在 R 中有点新,也许您可​​以添加一个带有基本图形直方图的版本,以便他们可以很好地理解答案?
  • 哈哈,基本上,我输入了几个,然后,它只是使用 Ctrl+C / Ctrl+V。对基本情节的好建议,我编辑了添加它的答案(我几乎不记得正确的命令了:()谢谢!
  • 感谢您的编辑。我相信您在library(df$age) 中打错字了
  • 谢谢!!我想我开始累了:D
  • 是的。这很有帮助。这真的很有帮助,感谢您花时间教我所有这些!我将尝试从那里查找语法的工作原理。另一个问题,如何将数据输入到 R 中?我已经通过 csv 导入了数据,但是如何将其放入数组中?就像你在上面展示的那样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2015-04-14
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
相关资源
最近更新 更多