Как использовать блочную диаграмму с диапазоном столбцов - PullRequest
1 голос
/ 03 марта 2020

Я хочу построить комиссию как процент от дохода fee_per_inc для каждого дохода year_hh_inc квинтиль.

это то, что я имею до сих пор:

pacman::p_load(RCurl, plm, tibble, ggplot2, AER, dplyr, car, arm, broom, tidyr, fastDummies, dummies)


x <- getURL("https://raw.githubusercontent.com/dothemathonthatone/maps/master/main_test.csv")
    maindf <- read.csv(text = x, row.names=NULL)

maindf <- maindf %>% 
 mutate(category = cut(year_hh_inc, breaks = (quantile(year_hh_inc, c(0, 1 / 5, 2 / 5, 3 / 5, 4 / 5, 1), na.rm = TRUE)), labels = c("first_quint", "second_quint", "third_quint", 'fourth_quint', 'fifth_quint'), include.lowest = TRUE), vals = 1) %>% 
 pivot_wider(names_from = category, values_from = vals, values_fill = list(vals = 0))


box  <- boxplot(maindf$year_hh_inc ~ maindf$fee_per_inc, col = 3:5)

Это то, что я хотел бы получить в результате:

Desired End Result

Я думаю, у меня есть немного больше работы; любая помощь с этой точки зрения приветствуется.

1 Ответ

1 голос
/ 03 марта 2020

Я думаю, что здесь было несколько проблем. Вам нужен блокпост, чтобы переменные были наоборот. Кроме того, вам нужно использовать переменную category, которую вы создали в mutate вместо исходной переменной. И, наконец, вам не нужно pivot_wider.

Некоторые значения также выходили за пределы полезного диапазона и могли быть неправильными (некоторые числа были -8), поэтому я обрезал выбросы, чтобы сделать график красивее. Вы захотите проверить исходные данные, чтобы понять, имеет ли это смысл.

pacman::p_load(RCurl, plm, tibble, ggplot2, AER, dplyr, car, arm, broom, tidyr, fastDummies, dummies)

x <- getURL("https://raw.githubusercontent.com/dothemathonthatone/maps/master/main_test.csv")
    maindf <- read.csv(text = x, row.names=NULL)

maindf <- maindf %>% 
 mutate(category = cut(year_hh_inc, 
                       breaks = (quantile(year_hh_inc, c(0, 1/5, 2/5, 3/5, 4/5, 1), na.rm = TRUE)), 
                       labels = c("first_quint", "second_quint", "third_quint",
                                  'fourth_quint', 'fifth_quint'), 
                       include.lowest = TRUE), 
        vals = 1) 

maindf <- maindf[maindf$fee_per_inc > 0 & maindf$fee_per_inc < 0.01, ]

box  <- boxplot(maindf$fee_per_inc ~ maindf$category, col = 3:5)

Создано в 2020-03-03 с помощью представ пакет (v0.3.0)

...