0

我在 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%很难用谷歌搜索。

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

4

2 回答 2

5

以下是一些可能的结构:

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"  
于 2012-05-14T23:33:07.947 回答
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")) +
于 2012-05-14T23:34:47.253 回答