簡體   English   中英

在R數據幀中設置一個虛擬變量,以便在ggplot2中按組進行繪制

[英]Set a dummy variable in an R data frame for plotting by group in ggplot2

我在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 

因此,無論CategoryA == specialdummy = 1

我嘗試搜索此內容,但我懷疑它需要%in% ,很難用Google搜索。

我這樣做可能是出於誤導的原因,所以也許可以幫助我簡化該問題-我創建此虛擬變量的目的是創建一個條形圖,該條形圖是一種側向直方圖,按計數列出所有類別。 我希望此變量提供一個group ,以便為虛擬== 1的紅色和虛擬== 0的綠色着色。 我將使用ggplot2。

以下是一些可能的構造:

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"  

嗯,剛發布后,我就從回答我的一個較早問題的人那里發現了這一點...

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")) +

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM