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, –