【发布时间】:2020-05-26 17:24:36
【问题描述】:
我有一个包含商业投标信息的数据框。我想创建一个直方图,显示为每个 bin 预订的投标百分比。 x 轴应该是价格,y 轴应该是在该箱内预订的投标的百分比。
我的代码过滤数据两年,然后使用 ggplot 2 库创建直方图。在本例中,“booked”是一个逻辑变量,“price”是一个连续数字。这是我的代码:
exp_data %>% filter(yr>=2019 & yr<=2020) %>%
ggplot(aes(price)) +
geom_histogram(aes(y=mean(booked)),binwidth=500)
当我运行代码时,我收到以下错误:
错误:stat_bin() 不得与 y 美学一起使用。
我也试过了
exp_data %>% filter(yr>=2019 & yr<=2020) %>%
ggplot(aes(price)) +
geom_histogram(aes(y=((..booked==TRUE..)/(..count..))),binwidth=500)
该代码产生此错误: FUN(X[[i]], ...) 中的错误:找不到对象“..booked”
我猜我只是不知道请求我想要得到的数学函数的正确方法。有人可以帮我学习如何做到这一点吗?
这是一个示例数据框:
'''
exp_data <- data.frame(price=abs(rnorm(100))*10000,
booked=sample(c(TRUE,FALSE),size=100,replace = TRUE))
使用这段代码,我可以绘制真假计数并堆叠/躲避它们,但我真正想知道的是真假的百分比。
exp_data %>% ggplot(aes(price)) + geom_histogram(aes(fill=booked),position="dodge")
【问题讨论】:
-
一小部分数据样本可以让您更轻松地解决问题。
-
在文档中,我看到“stat_bin() 仅适用于连续 x 数据。如果您的 x 数据是离散的,您可能想要使用 stat_count()。”这可能是您问题的一部分。另请注意,它似乎期望与 x 美学相关联,而不是 y。看看那里的例子。
-
嗨 Viper,欢迎来到 Stack Overflow。正如 Pedro 所建议的,如果您使用
dput(exp_data)提供至少一个数据样本,或者如果您的数据非常大dput(exp_data[1:10,]),那么提供帮助会容易得多。您可以编辑您的问题并粘贴输出。您可以用三个反引号 (```) 将其括起来以获得更好的格式。请参阅How to make a reproducible example 了解更多信息。