4
請參閱下面可重複的示例。第一個示例返回OUT變量的不正確矢量(組2的OUT值應爲10)。Dplyr突變與group_by給我不正確的值(BUG?)
library(dplyr)
x <- c(1, 1,2,2)
v <- c(NA,NA,10,20)
t <- c(1,2,1,2)
df = data.frame(x,v,t)
df = df %>% group_by(x) %>% mutate(out=v[which.min(t)])
df$out
下面的示例僅更改組1的一個值,但這會導致該命令返回組2(另一組)的正確答案。
v <- c(1,NA,10,20)
df = data.frame(x,v,t)
df = df %>% group_by(x) %>% mutate(out=v[which.min(t)])
df$out
我錯過了什麼,或者這是一個計算錯誤?
看起來的確是一個錯誤。我得到正確的結果使用庫(data.table); setDT(df)[,out:= v [which.min(t)],by = x]'。嘗試使用最新版本的'dplyr'(GH上的開發版本),如果它仍然無法正常工作,則報告爲GH的錯誤。 –
對於第一組,我們有'which.min(c(NA,NA))',它返回'integer(0)'。我想這是問題的來源。 – coffeinjunky
@coffeinjunky在'x'組中都沒有'''在't'中,所以它在這裏如何相關?這也適用於基準R'(df,ave(t,x,FUN = which.min))'。 Btw, –