2012-05-14 35 views
0

我在R中有一個數據框,並且我想添加虛擬變量以繪製不同項目的不同顏色。在R數據框中設置一個虛擬變量,用於在ggplot2中按組繪製

我的數據幀,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,以便爲虛擬== 1紅色和虛擬== 0綠色的虛擬顏色。我將使用ggplot2。

回答

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