根据dplyr summarise()数据[R]

时间:2018-09-13 16:50:25

标签: r ggplot2 dplyr

我正在尝试通过对此数据集https://www.cdc.gov/brfss/进行一些探索性数据分析来学习R。这个想法是同时使用 dplyr ggplot2

我有以下代码:

brfss2013 %>%
  filter(!is.na(menthlth), !is.na(veteran3)) %>%
  group_by(menthlth) %>%
  summarise(vcount = sum(veteran3 == "Yes"), nvcount = sum(veteran3 == "No"))

我想创建一个并排的条形图,其中x轴显示0到30(薄荷糖)的数字,y轴显示左侧的vcount和右侧的nvcount(对于每个值) (薄荷)。我知道我可以将代码的最后一行链接到ggplot行,但是我不知道如何创建并排图表。

我尝试将 summarise 的输出分配给变量,以便可以使用 melt 命令或类似命令,但是导致错误(“找不到对象'veteran3'”。有没有更简单的方法直接并排绘制两个变量?

感谢您的帮助,如果我缺少明显的内容,对不起。

编辑:我现在将结果分配给变量 a dput(head(a, 10))给出

structure(list(menthlth = 0:9, vcount = c(46931L, 1221L, 1861L, 1083L, 545L, 1323L, 197L, 466L, 105L, 22L), nvcount = c(287025L, 13964L, 21633L, 12505L, 6111L, 15312L, 1664L, 5882L, 1139L, 175L)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame" ))

1 个答案:

答案 0 :(得分:1)

我无权访问您的数据,但是根据您的示例,我制作了以下数据集:

dt<-data.frame(menthlth=sample( c(1:10),10),
               vcount=sample( c(1:1000),10),
               nvcount=sample( c(1:1000),10))

您需要首先修改数据集的结构:

NewDT<- data.frame(menthlth= dt$menthlth,
                  category=c(rep("vcount",length(dt$menthlth)),rep("nvcount",length(dt$menthlth) )),
                    value=c(dt$vcount,dt$nvcount)) 

然后他们制作了条形图:

library(ggplot2)

ggplot(data=NewDT, aes(x=menthlth, y=value, fill=category)) +
  geom_bar(stat="identity", position=position_dodge())

结果是:

enter image description here