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



我想使用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",]): 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")

然后我得到了这个错误:

(count)/scale错误:二进制操作符

的非数字参数

我不确定我是否完全理解了你想要做的事情。无论如何,我会避免在绘图代码中进行任何计算。请先准备数据。这是我的解决方案,如果这是你想要实现的:

   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

最新更新