将行值替换为组中的最大值

时间:2017-12-25 16:12:53

标签: r group-by max mutate

我的数据框看起来像这样

 a <- c(10,NA,30,40,NA,60,70,80,90,90,80,90,10,40)
 b <- c(l,k,l,l,k,l,l,l,k,k,l,l,k,l)
 c <- c(1,1,1,2,2,2,2,2,3,3,3,4,4,4)

我想逐栏对数据进行分组&#39; b&#39;并且&#39; c&#39;然后替换&#39; a&#39;中的行值。列按每组的最大值。例如:&#39; a&#39;的第1和第2个列将替换为30.这是我的代码:

 df%>%group_by(b, c)%>%mutate(a = max(a, na.rm = TRUE))

其他值由最大值替换,但不是NA。我不知道为什么mutate函数通过inf重写NA。以下是我的代码结果:

 a <- c(30,inf,30,80,inf,80,80,80,90,90,90,90,10,90)

但我想这样:

 a <- c(30,30,30,80,80,80,80,80,90,90,90,90,10,90)

1 个答案:

答案 0 :(得分:2)

假设您的数据是:

np.power(discount, np.arange(len(rewards))

您必须运行以下代码:

Tuong_df <- data.frame(
    c(10,NA,30,40,NA,60,70,80,90,90,80,90,10,40),
    c("l","l","l","l","l","l","l","l","k","k","k","k","k","k"),
    c(1,1,1,2,2,2,2,2,3,3,3,4,4,4))
names(Tuong_df) <- c("Var1","Var2","Var3")

无论如何,在不久的将来,如果你发布可重现的代码应该会更好。