2

独自のグループ値を除外しながら、複数のグループ化変数を使用してグループ平均を計算するより高速な方法を探しています。思考実験は、同じ年の同じ州の郡から、郡の値を除いた郡の平均値 (価格など) を見つけることです。これがおもちゃのデータセットです。

df <- data_frame(
  state = rep(c("AL", "CA"), each = 6),
  county = rep(letters[1:6], each = 2),
  year = rep(c(2011:2012), 6),
  value = sample.int(100, 12)
)

df %>%
  group_by(state, county, year) %>%
  summarise(q = mean(df$value[df$state == state & df$county != county & df$year == year]))

# Groups:   state, county [6]
   state county  year     q
   <chr> <chr>  <int> <dbl>
 1 AL    a       2011  56  
 2 AL    a       2012  46  
 3 AL    b       2011  50.5
 4 AL    b       2012  52  
 5 AL    c       2011  55.5
 6 AL    c       2012  29  
 7 CA    d       2011  52.5
 8 CA    d       2012  32  
 9 CA    e       2011  68.5
10 CA    e       2012  31.5
11 CA    f       2011  32  
12 CA    f       2012  42.5

上記のコードは望ましい結果をもたらしますが、これをより大きなデータセット (より多くのグループ化変数を含む) に適用すると、非常に遅くなります。これをスピードアップする方法について何か提案はありますか?

元のアプローチが間違っている場合は、それも指摘してください。

4

2 に答える 2