#r #ggplot2 #r-haven
#r #ggplot2 #r-haven
Вопрос:
Как я могу создать график с помощью ggplot, если мои ответы ИСТИННЫ или ЛОЖНЫ?
Это мой код:
t.obese<-master1%>%
filter(Income>0,obese==TRUE)%>%
select(Income,obese)
> head(t.obese)
Income obese
1 21600 TRUE
2 4000 TRUE
3 12720 TRUE
4 26772 TRUE
когда я пытаюсь создать график, r говорит мне: » Не знаю, как автоматически выбрать масштаб для объекта типа haven_labelled/vctrs_vctr/double . По умолчанию используется значение «непрерывный».
Фелер: stat_count() может иметь только эстетику x или y «.
Спасибо!
> dput(t.obese[1:10, ])
structure(list(Income = structure(c(1944, 4000, 16000, 19200,
22800, 21600, 18000, 18000, 2000, 18000), label = "Wages,Salary from main job", format.stata = "B.0g", labels = c(`[-5] in Fragebogenversion nicht enthalten` = -5,
`[-2] trifft nicht zu` = -2), class = c("haven_labelled", "vctrs_vctr",
"double")), obese = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE)), row.names = c(NA, 10L), class = "data.frame")
Комментарии:
1. показать свой код графика?
2. Что вы хотите поместить на ось x? Что вы хотите поместить на ось y? Какой тип графика (линейка, линия, точка …)? Вы хотите использовать цвет или что-нибудь еще?
3. Поскольку я очень новичок, с которым я пробовал,
p<-ggplot(t.obese, aes(x=obese, y=Income) geom_bar()
я хотел бы иметь Boxplots, y = Доход и x = ожирение4. Но если это линия, точка или гистограмма, подойдет любая.. моя главная проблема — это проблема с ИСТИННЫМ и ЛОЖНЫМ
5. @GregorThomas я отредактировал его!
Ответ №1:
Если вы хотите сравнить распределение доходов по ожирению, то вам нужны как obese = TRUE, так и obese = FALSE, чтобы вы могли провести сравнение
Я случайно создал non_obese
набор данных только для сравнения. Кроме того, я удалил haven_labelled
класс для Income
, поскольку он вызывал некоторые проблемы при reprex
рендеринге [с использованием haven::zap_labels()
В любом случае, надеюсь, что следующее поможет вам начать
library(dplyr)
library(ggplot2)
library(haven)
obese <-
structure(list(Income = structure(c(1944, 4000, 16000, 19200,
22800, 21600, 18000, 18000, 2000, 18000),
label = "Wages,Salary from main job",
format.stata = "B.0g",
labels = c(`[-5] in Fragebogenversion nicht enthalten` = -5,
`[-2] trifft nicht zu` = -2),
class = c("haven_labelled", "vctrs_vctr","double")),
obese = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,TRUE, TRUE, TRUE)),
row.names = c(NA, 10L), class = "data.frame"
)
# remove the haven/labelled class of the income variable
obese <-
obese %>%
haven::zap_labels()
non_obese <-
obese %>%
mutate(
Income = Income - rnorm(1, mean = 1000, sd = 50),
obese = !obese
)
full_data <-
bind_rows(obese, non_obese)
# Box plot
full_data %>%
ggplot(
aes(obese, Income)
)
geom_boxplot(width = 0.5)
geom_point(position = position_jitter(width = 0.05))
# Density plot
full_data %>%
ggplot(
aes(Income,fill = obese)
)
geom_density(alpha = 0.5)
Создано 2020-12-03 пакетом reprex (версия 0.3.0)
Ответ №2:
С данными, которыми вы поделились, которые минимальны, попробовал это:
library(ggplot2)
#Code1
ggplot(as.data.frame(t.obese), aes(x=factor(obese), y=Income))
geom_bar(stat='identity')
xlab('Obese')
scale_y_continuous(labels = scales::comma)
Вывод:
И это:
#Code 2
ggplot(as.data.frame(t.obese), aes(x=factor(obese), y=Income))
geom_point()
geom_jitter()
geom_boxplot()
xlab('Obese')
Вывод: