【问题标题】:Set a dummy variable in an R data frame for plotting by group in ggplot2在 R 数据框中设置一个虚拟变量,以便在 ggplot2 中按组绘制
【发布时间】:2012-05-14 23:23:03
【问题描述】:

我在 R 中有一个数据框,我想添加虚拟变量以绘制不同颜色的不同项目。

我的数据框df <- 是这样的:

UID CategoryA  count
  1       AAA      2
  2       AAA      2
  3       BBB      1
  4       CCC      1
  5       DDD      1

我还有另一个列表,special <- c("AAA", "DDD")

我想以df 结尾,例如:

UID CategoryA  count dummy
  1       AAA      2     1
  2       AAA      2     1
  3       BBB      1     0
  4       CCC      1     0
  5       DDD      1     1 

这样dummy = 1,无论在哪里CategoryA == special

我尝试搜索这个,但我怀疑它需要%in%,这很难用谷歌搜索。

我这样做可能是出于误导的原因,所以也许你可以帮我解决这个问题——我创建这个虚拟变量的目的是创建一个条形图,它有点像横向直方图,列出了所有类别数数。我希望这个变量提供一个group,以便将 dummy==1 的那些和 dummy==0 的绿色着色。我将使用 ggplot2。

【问题讨论】:

    标签: r pattern-matching ggplot2 dataframe


    【解决方案1】:

    以下是一些可能的结构:

    categoryA <- c("AAA", "AAA", "BBB", "CCC", "DDD")
    special <- c("AAA", "DDD")
    
    # Create a dummy variable
    as.integer(categoryA %in% special)
    # [1] 1 1 0 0 1
    
    # Create a color vector (2 methods shown)
    c("green", "red")[categoryA %in% special + 1]
    # [1] "red"   "red"   "green" "green" "red"  
    ifelse(categoryA %in% special, "red", "green")
    # [1] "red"   "red"   "green" "green" "red"  
    

    【讨论】:

      【解决方案2】:

      呃,就在发帖后,我从回答我之前的问题的人那里知道了这一点......

      df$dummy <- ifelse(df$categoryA %in% special,1,0)
      

      为了完整起见,我还必须将其添加到我的 ggplot 代码中...

      scale_fill_manual(values=c("#00FFAA","#FF0000"), 
                             name="Legend",
                             breaks=c("TRUE", "FALSE"),
                             labels=c("Dummy", "No Dummy")) +
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-10
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 2022-01-10
        • 2020-12-21
        • 1970-01-01
        相关资源
        最近更新 更多