将组值替换为组中的最大值[关闭]

问题描述 投票:-4回答:1

我的数据框看起来像这样

 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)

我想按列'b'和'c'对数据框进行分组,然后将'a'列中的行值替换为每个组的最大值。例如:'a'列的第1和第2列将替换为30.这是我的代码:

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

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

 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)
r group-by max mutate
1个回答
2
投票

假设您的数据是:

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")

您必须运行以下代码:

Tuong_df_mod <- Tuong_df %>% 
    group_by(Var2,Var3) %>% 
    mutate(Var1=max(Var1,na.rm=TRUE))

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

© www.soinside.com 2019 - 2024. All rights reserved.