dplyr:如何在分组变量中忽略NA

时间:2018-06-29 01:24:06

标签: r dplyr grouping na

使用dplyr,我尝试按两个变量进行分组。现在,如果一个变量中有一个NA,但另一个变量匹配,我仍然希望看到这些行已分组,并且NA代表非NA值。因此,如果我有一个像这样的数据框:

variable_A <- c("a", "a", "b", NA, "f")
variable_B <- c("c", "d", "e", "c", "c")
variable_C <- c(10, 20, 30, 40, 50)
df <- data.frame(variable_A, variable_B, variable_C)

如果我想按variable_A和variable_B进行分组,那么第1行和第4行通常不会进行分组,但是我希望它们进行分组,而NA则被覆盖为“ a”。我该如何实现?以下内容不起作用。

df2 <- df %>%
         group_by(variable_A, variable_B) %>%
         summarise(total=sum(variable_C))

2 个答案:

答案 0 :(得分:3)

您可以先按B分组,然后填写缺少的A值。然后继续执行您想做的事情:

console.log(player.image)

答案 1 :(得分:0)

您可以使用基数R进行缺失值的估算,如下所示:

 ii <- which(is.na(df$variable_A))
 jj <- which(df$variable_B == df$variable_B[ii])
 df_filled <- df
 df_filled$variable_A[jj] = df$variable_A[jj][!is.na(df$variable_A[jj])]

然后按照dplyr的计划分组和总结

 df_filled %>%
 group_by(variable_A, variable_B) %>%
 dplyr::summarise(total=sum(variable_C))