Как объединить таблицы для создания одного столбчатого графика в ggplot?

#r #ggplot2 #filter #bar-chart #dplyr

#r #ggplot2 #Фильтр #гистограмма #dplyr

Вопрос:

Я хотел бы знать, как я могу объединить свои таблицы для создания одного столбчатого графика. Сначала я изменил и создал новые столбцы… но ответы ИСТИННЫ ИЛИ ЛОЖНЫ

 master1 <- master %>%
  mutate(underweight = BMI < 18.5,
         normal = between(BMI, 18.5, 24.9),
         overweight = between(BMI, 25, 29.9),
         obese = between(BMI, 30, 34.9),
         extreme = BMI > 35)
 

поскольку я не знал, как создать из этой таблицы столбчатый график, я разделил их на новые таблицы:

 t.underweight<-master1 %>%
  filter(Income>0,underweight==TRUE) %>%
  select(Income,underweight)

t.normal<-master1%>%
  filter(Income>0,normal==TRUE)%>%
  select(Income,normal)

t.overweight<-master1%>%
  filter(Income>0,overweight==TRUE)%>%
  select(Income,overweight)

t.obese<-master1%>%
  filter(Income>0,obese==TRUE)%>%
  select(Income,obese)

t.extreme<-master1%>%
  filter(Income>0,extreme==TRUE)%>%
  select(Income,extreme)
 

может быть, есть более простой способ направить после изменения, если да, я был бы признателен, если бы узнал, как это сделать. если нет, то как я могу просто объединить эту таблицу для создания столбчатого графика?
моей второй переменной будет » Доход» … по оси y

Ответ №1:

вы ищете это? введите описание изображения здесь

 library(tidyverse)
set.seed(1)
bmi <- runif(100, 10, 50)
income <- rnorm(100, 400, 10)
id <- 1:100

df <- data.frame(id = id, bmi = bmi, income = icnome)

res <- df %>% 
  mutate(BMI_cat = cut(
    x = bmi,
    breaks = c(0, 18.5, 25, 30, 35, Inf),
    labels = c("underweight", "normal", "overweight", "obese", "extreme"),
    ordered_result = T
  ))

ggplot(res, aes(income))  
  geom_histogram(bins = 10)  
  facet_wrap(~BMI_cat, scales = "fixed")
 

Комментарии:

1. Здравствуйте, Юрий, спасибо за вашу помощь.. Я как бы ищу что-то вроде этого…

2. Отлично! Если вы считаете, что этот ответ был полезен для вас, вы можете принять его, нажав на галочку в левой части этого ответа 🙂

3. Да, конечно .. еще один вопрос, но как это возможно, когда ответы похожи на TRUE и FALSE? t.extreme<-master1%>% filter(Income>0,extreme==TRUE)%>% select(Income,extreme) > head(t.extreme) Income extreme 1 21600 TRUE 2 4000 TRUE 3 12720 TRUE 4 26772 TRUE