【问题标题】:How to plot a data frame with multiple frequencies for a factor?如何为一个因子绘制具有多个频率的数据框?
【发布时间】:2017-05-30 12:44:59
【问题描述】:

我有这个数据框:

df <- data.frame(make = c("dodge", "dodge", "toyota", "ford", "dodge", "toyota","toyota","ford",  "ford", "dodge"),
                  grn = c(    1,      1,        NA,      1,     NA,      NA,       1,         1,      NA,      NA),
                  blu = c(    NA,     NA,       1,       NA,    1,       NA,       NA,        NA,     1,       NA),
                  blk = c(    NA,     NA,       NA,      NA,    NA,      1,        NA,        NA,     NA,       1))   

我正在尝试用 x 轴上的“make”和 y 轴的总“make”计数创建一个绘图,并使用颜色进行填充。我想我需要为品牌和颜色制作一个计数表,但我不确定如何做到这一点。例如,表格看起来像这样:

 DF <- read.table(text = "make  grn  blu  blk
                          dodge  2    1    1
                          ford   2    1    0
                          toyota 1    1    1", header = TRUE)

那么解决方法就很简单了

library(reshape2)
library(ggplot2)

DF1 <- melt(DF, id.var="make")

ggplot(DF1, aes(x = make, y = value, fill = variable)) +
geom_bar(stat = "identity")

那么如何将我的数据框“df”转换为“DF”?

【问题讨论】:

    标签: r ggvis


    【解决方案1】:

    您不必进行所有这些转换。更短的情节制作方法:

    df %>%
      gather(key=col, value=num, -make) %>%
      na.omit() %>%
      ggplot(aes(make, fill=col)) +
        geom_bar()
    

    前三行创建输入数据的长格式。然后传递给ggplot 为您进行统计转换。

    【讨论】:

      【解决方案2】:

      你可以使用dplyr::summarise_all:

      library(dplyr)
      df %>% group_by(make) %>% summarise_all(sum, na.rm=TRUE)
      
      # A tibble: 3 × 4
      #    make   grn   blu   blk
      #  <fctr> <dbl> <dbl> <dbl>
      #1  dodge     2     1     1
      #2   ford     2     1     0
      #3 toyota     1     1     1
      

      【讨论】:

        猜你喜欢
        • 2021-08-23
        • 2016-07-30
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 2015-08-17
        • 1970-01-01
        相关资源
        最近更新 更多