売上高のカテゴリ変数を持つデータ フレームで、いくつかの基本的な統計 (および後で詳細な統計) を実行しようとしています。売上に加えて、地域 (商人がいる場所)、曜日、時間帯 (昼食、仕事の後など)、その他さまざまなことを追跡します。
以下は、データの小さなランダムなサブセットです: (これは基本的な表現であることに注意してください。実際のデータ フレームには 38 列あります。該当しないもののほとんどを取り除いただけです)。
structure(list(dayofweek = structure(c(4L, 7L, 3L, 7L, 3L, 2L,
2L, 7L, 3L, 3L, 2L, 7L, 5L, 5L, 2L, 5L, 1L, 3L, 7L, 3L, 4L, 1L,
3L, 5L, 7L), .Label = c("Friday", "Monday", "Saturday", "Sunday",
"Thursday", "Tuesday", "Wednesday"), class = "factor"), timeofday = structure(c(6L,
4L, 5L, 5L, 2L, 6L, 6L, 5L, 6L, 3L, 6L, 3L, 5L, 4L, 1L, 3L, 5L,
6L, 5L, 4L, 6L, 6L, 3L, 2L, 5L), .Label = c("After Work", "Early AM",
"Evening", "Late AM", "Lunch", "MidAfternoon", "Overnight"), class = "factor"),
area = c(6L, 4L, 4L, 5L, 5L, 1L, 4L, 2L, 3L, 2L, 7L, 3L,
7L, 5L, 7L, 4L, 1L, 4L, 1L, 4L, 5L, 7L, 1L, 3L, 7L), totsales = c(40,
6, 5, 10, 1, 0, 0, 3, 5, 3, 10, 30, 2, 1, 2, 22, 8, 1, 1,
5, 11, 20, 0, 1, 5)), .Names = c("dayofweek", "timeofday",
"area", "totsales"), class = "data.frame", row.names = c(192278L,
140773L, 121051L, 157984L, 154299L, 258034L, 108031L, 43760L,
78005L, 42103L, 95603L, 98431L, 30252L, 165303L, 40713L, 108252L,
304549L, 137041L, 268473L, 124599L, 161253L, 12897L, 240815L,
89439L, 21032L))
私が最初にやっていることは、各地域と 1 日の各時間帯の平均と中央値の売上を得ようとすることです。Rにそれぞれのリストを調べて、すべての値を返すようにしたいと思います。私はこれを試しました:
vallist<-list(a= c("Early AM", "Late AM", "Lunch", "MidAfternoon", "After Work",
"Evening", "Overnight"),
b= c(1,2,3,4,5,6,7))
sapply(vallist[['b']], function(x)
mapply(function(a,b) mean(data$totsales[which(data$timeofday==a & data$area==b)]),
vallist[['a']], vallist[['b']])
)
ただし、平均はエリア 1 の各時刻セグメントにのみ適用され、エリア 1 ~ 7 の各時刻セグメントには適用されません。したがって、私の結果は次のようになります。
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
Early AM 9.192847 9.192847 9.192847 9.192847 9.192847 9.192847 9.192847
Late AM 8.020678 8.020678 8.020678 8.020678 8.020678 8.020678 8.020678
Lunch 10.096277 10.096277 10.096277 10.096277 10.096277 10.096277 10.096277
MidAfternoon 11.503961 11.503961 11.503961 11.503961 11.503961 11.503961 11.503961
After Work 8.206124 8.206124 8.206124 8.206124 8.206124 8.206124 8.206124
Evening 11.457599 11.457599 11.457599 11.457599 11.457599 11.457599 11.457599
Overnight 11.415667 11.415667 11.415667 11.415667 11.415667 11.415667 11.415667
これはエリア 1 の正解ですが、各エリアで同じ値であることがわかります。R に関数を複数のリストに適用させ、値のすべての組み合わせを返すようにするにはどうすればよいですか?
次のステップは、中央値を適用し、地区レベルで異なる平日について評価することですが、同じ考えがすべての異なる組み合わせに適用されると思います.