2017-07-25 8 views
0

収集したデータ(dat)には、大理石の乱数( "Marbles")で埋められた同じセット( "Set")の2つの異なるバケットが含まれています 2つのトリートメント、「カラー」(青/白)、「サイズ」(小/大)各試験は、異なる「ブロック」(すなわち、タイムスロット)で行われた。 2つのバケツはすべて1つのセットの一部でした。バケツの位置が記録されます(「位置」)。ここにデータのサンプルがあります。各ユニーク複製(色の即ち一意の組み合わせ、セット、ブロック、サイズ)についてdplyr関数を使用してインデックス値を格納する方法

Colour Set Size Position Marbles Block 
Blue  1 Small 1   8  1 
Blue  1 Small 2   81 1 
Blue  6 Small 1   14 2 
Blue  6 Small 2   11 2 
Blue  1 Large 4   0  1 
Blue  1 Large 5   0  1 
Blue  1 Large 1   3  1 
Blue  1 Large 2   43 1 
White 1 Small 1   8  1 
White 1 Small 2   81 1 
White 1 Small 6   7  1 
White 6 Small 3   12 2 
White 6 Small 4   25 2 
White 2 Large 1   86 1 
White 2 Large 2   77 1 
White 1 Large 1   3  11 
White 1 Large 2   43 11 

、Iは、ビー玉の最大値のインデックス位置を見つけたいです。

library(dplyr) 
library(plyr) 
a <- vector() 
result <- dat %>% 
    mutate(MaxMarbles = max(dat$marbles)) %>% 
    group_by(colour, size, block, set) %>% 
    pos1 <- which(a == max(dat$marbles)) 

「%>%」が見つかりませんでした。私はdplyrのインストールを確認し、ライブラリから呼び出されるようにしました。しかし、私は問題を検出することができませんし、おそらく私はキャッチすることができない構文エラーが不思議でしたか?

答えて

1

最初のルール:質問への :)

今dplyr後決して史上負荷plyr。これはあなたに彼らのグループ内のビー玉の最大数を持っている行のインデックスを取得します:

library(dplyr) 
result_df <- dat %>% 
    group_by(colour, size, block, set) %>% 
    mutate(result = (marbles == max(marbles))) 
result_vec <- which(result_df$result) 

あなたはブール指標をしたい場合は、which()を省略することができます。

+0

実際に 'plyr'から完全に離れ、' dplyr'を使うべきです。あなたは私がこのためにどれくらいの時間を費やしたかわからない... –

+0

ありがとう。 mutate関数を間違って使用していたのがわかります。それがそれを解決しました。また、注目されているのは、今からdplyrだけを使用することです – Ash

関連する問題