2016-09-01 39 views
1

我想使用ggplot2創建一個圖表,顯示特定地區的政黨投票率相對於該地區選民數量的百分比而非在國內。(count)/ scale中的錯誤:R中的二元運算符的非數字參數

這是我的數據幀:

data <- read.table(header=TRUE, text=' 
       REGION Q99 
       Tunis Nahdha 
       Tunis Jabha 
       Tunis NidaaTounes 
       Tunis Nepasvoter 
       Tunis Nepasvoter 
       Tunis Nepasvoter 
       Tunis NidaaTounes 
       Tunis Nepasvoter 
       Tunis  Nahdha 
       Tunis NidaaTounes 
       Tunis   CPR 
       Tunis  Nahdha 
       Tunis  Autres 
       Tunis Nepasvoter 
       Tunis Nepasvoter 
       Tunis  Nahdha 
       Tunis Jabha 
       Tunis Nepasvoter 
       Tunis  Nahdha 
       Tunis  Nahdha 
       Tunis JabhaChaabia 
       Tunis  Autres 
       Tunis Nepasvoter 
       Tunis NidaaTounes 
       Tunis Nepasvoter 
       Tunis NidaaTounes 
       Tunis Nepasvoter 
       Tunis NidaaTounes 
       Tunis Jabha 
       Tunis NidaaTounes 
       Tunis  Autres 
       Tunis  Nahdha 
       Tunis  Nahdha 
       Tunis  Autres 
       Tunis Jabha 
       Tunis Nepasvoter 
       Tunis Nepasvoter 
       Tunis   CPR 
       Tunis  Nahdha 
       Tunis Nepasvoter 
       Tunis Nepasvoter 
       Tunis Nepasvoter 
       Tunis  Nahdha 
       Tunis NidaaTounes 
       Tunis   CPR 
       Tunis   CPR 
       Tunis Nepasvoter 
       Tunis  Autres 
       Tunis  Nahdha 
       Tunis NidaaTounes 
       Tunis  Nahdha 
       Tunis  Autres 
       Tunis Nepasvoter 
       Ariana  Nahdha 
       Ariana   CPR 
       Ariana  Nahdha 
       Ariana Nepasvoter 
       Ariana NidaaTounes 
       Ariana   CPR 
       Ariana Nepasvoter 
       Ariana  Nahdha 
       Ariana Nepasvoter 
       Ariana NidaaTounes 
       Ariana   CPR 
       Ariana NidaaTounes 
       Ariana NidaaTounes 
       Ariana NidaaTounes 
       Ariana   CPR 
       Ariana  Nahdha 
       Ariana   CPR 
       Ariana  Nahdha 
       Ariana  Nahdha 
       Ariana   CPR 
       Ariana  Nahdha 
       Ariana Nepasvoter 
       Ariana NidaaTounes 
      Ariana NidaaTounes 
       Ariana  Nahdha  ') 

首先,我用這個代碼:

g <- ggplot(data, aes(x = REGION, y =(..count..)/(nrow(data[data$REGION=="Ariana",])), fill = Q99)) 
    g <- g + geom_bar(position = "stack") 

但我得到這個錯誤:

Error in nrow(data[data$REGION == "Ariana", ]) : object 'data' not found

然後我試圖使用environment= environment()

scale = nrow(data[data$REGION=="Ariana",]) 
    g <- ggplot(data, aes(x = REGION, y = (..count..)/scale, fill = Q99), environment = environment()) 
    g <- g + geom_bar(position = "stack") 

然後我得到這個錯誤:

Error in (count)/scale : non-numeric argument to binary operator

+0

請提供一個可重複的例子。 – kaksat

+0

@kaksat我添加了數據框 –

回答

0

我不知道我已經完全掌握了什麼是你想這樣做。無論如何,我會避免在繪圖代碼中進行任何計算。先準備數據。 這是我的解決方案,如果這是你想要實現的:

dataSummarized <- group_by(data, REGION, Q99) %>% 
      summarise(percentVotes = n()) %>% 
      mutate(freq = percentVotes/sum(percentVotes)) 



    g <- ggplot(dataSummarized, aes(x = REGION, y = freq, fill = Q99)) 
    g <- g + geom_bar(stat = "identity") 
    g 
相關問題