2015-11-28 65 views
1

編輯:我很少問這個問題。對於更清晰的問題,請參閱Find the variance over a sliding window in dplyr獲取dplyr中每一行的值和組的值

我想調用一個函數,使用每行的值和組的值。

# make some data with categories a and b 
library(dplyr) 
df = expand.grid(
    a = LETTERS[1:3], 
    b = 1:3, 
    x = 1:5 
) 
# add a variable that changes within group 
df$b2 = df$b + floor(runif(nrow(df))*100) 

df %>% 
# group the data 
group_by(a, b) %>% 
# row by row analysis 
rowwise() %>% 
# do some function based on this row's value and the vector for the group 
mutate(y = x + 100*max(.$b2)) 

我想.$b2只對應於當前組中的項目。相反,它是整個數據框。

有什麼方法可以獲得組的數據嗎?

注意:我其實並不關心max。這只是一個更復雜功能的替代品。我需要能夠撥打foo(one_value, group_vector)

回答

1

嘗試

df %>% 
    group_by(a,b) %>% 
    mutate(y=x+100*max(b2)) 
+0

'first'只返回該組的向量的第一個值,對不對?我需要整個組的向量以及當前行的該值。 – sharoz

+1

@sharoz當您使用'b'進行分組時,每個組只有一個唯一值,因此該值會被回收。你可以用'max'或其他函數替換它。 – akrun

+0

我簡化了這個例子。 b2現在在不同的組內有所不同。 – sharoz

相關問題