restaurants
(IDで識別される)のスコアに関する観測を含むテーブルがあります。変数mean
は、各日を中心とした 1 週間のウィンドウ (つまり、3 日前から 3 日後まで) に受け取ったレビューの平均評価であり、変数count
は同じウィンドウで受け取ったレビューの数です (以下のコードを参照してください)。私のdput
データフレームのランダムに生成されたサンプルの a)。
いずれかの変数に大きなスパイクがあるレストランに注目したいと考えています (平均評価が突然大幅に上昇したり、突然低下したりするなど)。それらのレストランについて、分布をプロットして何が起こっているかを調査したいと思います (レストランがたくさんあるので、手動で行うことはできず、半分手動で検査するためにドメインを制限する必要があります)。
また、私のデータは日単位なので、粒度を下げたいと思っています。特に、特定の月のすべての評価またはカウントを単一の値で平均したいと考えています。
動物園は私がそれをうまくやるのに役立つはずだと思います.例のデータフレームを考えると、それを動物園の時系列に変換できると思います.
z <- read.zoo(df, split = "restaurantID",
format = "%m/%d/%Y", index.column = 2, FUN = as.yearmon, aggregate = mean)
ただし、restaurantID で分割すると、期待した結果が得られません。代わりに得られるのは、多くの NA です。
mean.1006054 count.1006054 mean.1006639 count.1006639 mean.1006704 count.1006704 mean.1007177 count.1007177
Lug 2004 NA NA NA NA NA NA NA NA
Ago 2004 NA NA NA NA NA NA NA NA
Nov 2004 NA NA NA NA NA NA NA NA
Gen 2005 NA NA NA NA NA NA NA NA
Feb 2005 NA NA NA NA NA NA NA NA
Mar 2005 NA NA NA NA NA NA NA NA
mean.1007296 count.1007296 mean.1007606 count.1007606 mean.1007850 count.1007850 mean.1008272 count.1008272
Lug 2004 NA NA NA NA NA NA NA NA
Ago 2004 NA NA NA NA NA NA NA NA
Nov 2004 NA NA NA NA NA NA NA NA
Gen 2005 NA NA NA NA NA NA NA NA
Feb 2005 NA NA NA NA NA NA NA NA
Mar 2005 NA NA NA NA NA NA NA NA
restaurantID 列で分割しないと機能することに注意してください。
df$website <- NULL
> z <- read.zoo(df, format = "%m/%d/%Y", index.column = 2, FUN = as.yearmon, aggregate = mean)
> head(z)
restaurantID mean count
Lug 2004 1418680 3.500000 1
Ago 2004 1370457 5.000000 1
Nov 2004 1324645 4.333333 1
Gen 2005 1425933 1.920000 1
Feb 2005 1315289 3.000000 1
Mar 2005 1400577 2.687500 1
また、plot.zoo(z)
機能しますが、もちろん、作成されたグラフは私にとって意味がありません。
私の質問は次のとおりです。
1) どちらかの列の「月間」スパイクが高いレストランをフィルタリングするにはどうすればよいですか?
2) restaurantID を分割して、そのようなレストランのみの時系列をプロットするにはどうすればよいですか?