2017-07-25 67 views
0

我收集的數據(dat)有兩個不同的桶,它們是同一組(「Set」)中隨機數的大理石(「大理石」)的所有部分 有兩種處理,「顏色」(藍/白)和「尺寸」(小/大)。每個試驗都是在不同的「塊」(即時隙)中完成的。這兩個桶都是一套的一部分。記錄桶的位置(「位置」)。這是一個數據樣本。如何使用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 

對於每個唯一的複製(即獨特的色彩,組,塊,大小的組合),我想找到彈子最大值的索引位置。

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現在 :)

的問題。如果你想布爾指數可以省略which()

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

:這將讓你有它們的組內彈珠的最大行數的指標。

+0

你實際上應該完全離開'plyr'並使用'dplyr'。你不知道我浪費了多少時間,因爲這... –

+0

謝謝。我發現我錯誤地使用了mutate函數。這解決了它。另外,注意到 - 從現在開始只會使用dplyr – Ash

相關問題