0

到着前の日数に基づいて、ホテルの部屋の毎日の予約を調べています。

予約スピードは曜日やホテルA、ホテルBで違うと思うので、これらのカテゴリーで切り分けたいと思います。ただし、ファセットすると (7 x 2 ホテル = 14 ファセット)、各カテゴリの日付の数ではなく、日付の合計数で除算されます。つまり、私は 1400 のユニークな伊達ホテルを持っているので、ファセットすると約 100 ではなく、すべてが 1400 で割られます。「典型的な」予約パターンを表すことができるように、各ファセットにある Hotel-Dates の数に応じてコードを 97,103,101 で割りたいと思います。

これが私の現在のデータとコードです:

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)

ありがとう!

4

2 に答える 2

0

1 つのアプローチは、グラフを作成する前に、プロットしたいものを単純に計算することです。あなたの場合、Date_HotelIDDayOfWeek/組み合わせの一意の数を計算し、各行のその値でHotel割るだけです。bookings

たとえば、dplyrの関数を使用してこれを行う場合があります。のdplyrバージョンでn_distinctあるを使用していることに注意してください。length(unique(...))

library(dplyr)
mydf3 = mydf %>%
    group_by(DayOfWeek, Hotel) %>% 
    mutate(book.speed = bookings/n_distinct(Date_HotelID))
mydf3

Source: local data frame [40 x 7]
Groups: DayOfWeek, Hotel [4]

   DaysBeforeArrival  Hotel DayOfWeek  Dates bookings Date_HotelID book.speed
               (int) (fctr)     (dbl) (fctr)    (int)       (fctr)      (dbl)
1                  1      A         1  Jan-1        5      A-Jan-1        2.5
2                  2      B         1  Jan-1       34      B-Jan-1       17.0
3                  3      A         1  Jan-1       20      A-Jan-1       10.0
4                  4      B         1  Jan-1       11      B-Jan-1        5.5
5                  5      A         1  Jan-1       13      A-Jan-1        6.5
6                  1      B         1  Jan-1       38      B-Jan-1       19.0
7                  2      A         1  Jan-1        7      A-Jan-1        3.5
8                  3      B         1  Jan-1       15      B-Jan-1        7.5
9                  4      A         1  Jan-1       22      A-Jan-1       11.0
10                 5      B         1  Jan-1       14      B-Jan-1        7.0
..               ...    ...       ...    ...      ...          ...        ...

計算されたデータでグラフを作成するだけです。

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

ここに画像の説明を入力

于 2015-10-08T23:35:02.357 に答える
0

これはあなたが達成したかったことですか?

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

ここに画像の説明を入力

于 2015-10-08T06:36:42.410 に答える