(count)/ scale中的错误:R中二进制运算符的非数字参数

时间:2016-09-01 09:22:11

标签: r ggplot2

我想使用ggplot2创建一个情节,显示特定地区政党的投票百分比相对于该国内不是该国的选民人数。

这是我的数据框:

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

但我收到了这个错误:

  

nrow中的错误(data [data $ REGION ==“Ariana”,]):找不到对象'数据'

然后我尝试使用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")

然后我收到了这个错误:

  

(count)/ scale中的错误:二元运算符的非数字参数

1 个答案:

答案 0 :(得分: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