Подтвердить что ты не робот

R ggplot2: stat_count() не следует использовать с эстетической ошибкой y в столбчатой ​​диаграмме

Привет, ребята, я получаю эту ошибку при построении гистограммы, и я не могу избавиться от нее, я пробовал как qplot, так и ggplot, но по-прежнему ту же ошибку.

Ниже приведен мой код

 library(dplyr)
 library(ggplot2)

 #Investigate data further to build a machine learning model
 data_country = data %>%
           group_by(country) %>%
           summarise(conversion_rate = mean(converted))
  #Ist method
  qplot(country, conversion_rate, data = data_country,geom = "bar", stat ="identity", fill =   country)
  #2nd method
  ggplot(data_country)+aes(x=country,y = conversion_rate)+geom_bar()

Ошибка:

  stat_count() must not be used with a y aesthetic

Данные в data_country

    country conversion_rate
    <fctr>           <dbl>
  1   China     0.001331558
  2 Germany     0.062428188
  3      UK     0.052612025
  4      US     0.037800687

Ошибка появляется на гистограмме, а не в пунктирной диаграмме. Любые предложения окажут большую помощь

4b9b3361

Ответ 1

Во-первых, ваш код немного не в порядке. aes() - аргумент в ggplot(), вы не используете ggplot(...) + aes(...) + layers

Во-вторых, из файла справки ?geom_bar:

По умолчанию geom_bar использует stat = "count", что делает высоту стержня пропорциональной количеству наблюдений в каждой группе (или, если указан весовой коэффициент, сумме весов). Если вы хотите, чтобы высота столбцов представляла значения в данных, используйте stat = "identity" и сопоставьте переменную с эстетикой y.

Вы хотите, чтобы второй случай, когда высота бара равна conversion_rate Так что вы хотите, это...

data_country <- data.frame(country = c("China", "Germany", "UK", "US"), 
            conversion_rate = c(0.001331558,0.062428188, 0.052612025, 0.037800687))
ggplot(data_country, aes(x=country,y = conversion_rate)) +geom_bar(stat = "identity")

Результат:

enter image description here

Ответ 2

если вы хотите использовать свои данные, существующие в вашем фрейме данных, в качестве значения y, вы должны добавить stat = "identity" в параметр отображения. Функция geom_bar имеет значение y по умолчанию. Например,

ggplot(data_country)+
  geom_bar(mapping = aes(x = country, y = conversion_rate), stat = "identity")

Ответ 3

Я искал то же самое, и это также может работать

p.Wages.all.A_MEAN <- Wages.all %>%
                  group_by('Career Cluster', Year)%>%
                  summarize(ANNUAL.MEAN.WAGE = mean(A_MEAN))

имена (p.Wages.all.A_MEAN) [1] "Карьерный кластер" "Год" "ANNUAL.MEAN.WAGE"

p.Wages.all.a.mean <- ggplot(p.Wages.all.A_MEAN, aes(Year, ANNUAL.MEAN.WAGE , color= 'Career Cluster'))+
                  geom_point(aes(col='Career Cluster' ), pch=15, size=2.75, alpha=1.5/4)+
                  theme(axis.text.x = element_text(color="#993333",  size=10, angle=0)) #face="italic",
p.Wages.all.a.mean

Ответ 4

Спасибо, лучший ответ действительно работал для меня.