R 使用几何图形条表示平均值

R 使用几何图形条表示平均值,r,ggplot2,facet,geom-bar,R,Ggplot2,Facet,Geom Bar,我在看根据抵达前几天每天预订的酒店房间 我认为预订速度会因一周中的不同日期以及酒店A和酒店B而有所不同,所以我想按这些类别进行分类。但是,当I facet(7x2hotels=14 facets)时,它除以日期总数,而不是每个类别中的日期数。也就是说,我有1400家独特的日期酒店,所以所有的东西都被1400除以,而不是我计算的大约100。我希望我的代码除以97103101,这取决于我在每个方面有多少个酒店日期,这样我就可以代表一个“典型”的预订模式 以下是我当前的数据和代码: DaysBefor

我在看根据抵达前几天每天预订的酒店房间

我认为预订速度会因一周中的不同日期以及酒店A和酒店B而有所不同,所以我想按这些类别进行分类。但是,当I facet(7x2hotels=14 facets)时,它除以日期总数,而不是每个类别中的日期数。也就是说,我有1400家独特的日期酒店,所以所有的东西都被1400除以,而不是我计算的大约100。我希望我的代码除以97103101,这取决于我在每个方面有多少个酒店日期,这样我就可以代表一个“典型”的预订模式

以下是我当前的数据和代码:

DaysBeforeArrival=rep(1:5,8)
Hotel=rep(LETTERS[1:2],20)
DayOfWeek=c(rep(1,10),rep(2,10),rep(1,10),rep(2,10))
Dates=c(rep("Jan-1",10),rep("Jan-2",10),rep("Jan-8",10),rep("Jan-9",10))
bookings=(sample(1:40))
Date_HotelID=paste(Hotel,Dates,sep="-")
mydf=data.frame(DaysBeforeArrival,Hotel,DayOfWeek,Dates,bookings,Date_HotelID)


ggplot(mydf,aes(DaysBeforeArrival,bookings/length(unique(Date_HotelID)))+
geom_bar(stat=identity)  +
facet_grid(DayofWeek~HotelID)

谢谢

这就是你想要实现的吗

library(ggplot2)
ggplot(mydf,aes(DaysBeforeArrival,bookings/length(unique(Date_HotelID))))+
         geom_bar(stat="identity")  + facet_wrap(~Hotel~DayOfWeek)

一种方法是,在绘制图形之前,只需计算出要绘制的内容。在您的情况下,只需计算每个
DayOfWeek
/
酒店的
唯一的
Date\u HotelID
,然后将每行的
预订数除以该值即可

例如,我可以使用dplyr中的函数来实现这一点。注:我使用的是
n_distinct
,这是
length(unique(…)
的dplyr版本

用户只需使用计算出的数据绘制图形

ggplot(mydf3, aes(DaysBeforeArrival, book.speed)) +
    geom_bar(stat="identity")  +
    facet_grid(DayOfWeek ~ Hotel)

您能为您的问题添加一个可复制的数据吗?这应该有效:daysbeforearrative=rep(1:5,8);酒店=代表(字母[1:2],20);DayOfWeek=c(代表(1,10),代表(2,10),代表(1,10),代表(2,10));日期=c(代表(10年1月1日)、代表(10年1月2日)、代表(10年1月8日)、代表(10年1月9日);预订量=(样本(1:40));Date_HotelID=粘贴(酒店,日期,sep=“-”;df=data.frame(Daysbeforearrative、Hotel、DayOfWeek、Dates、bookings、Date_HotelID)我需要显示一个典型的日期(例如,除以每个方面窗口中的Date_HotelID的数量,而不是除以Date_HotelID的总数)
ggplot(mydf3, aes(DaysBeforeArrival, book.speed)) +
    geom_bar(stat="identity")  +
    facet_grid(DayOfWeek ~ Hotel)