【问题标题】:cumulative mean by group with NA in r [duplicate]r中具有NA的组的累积平均值[重复]
【发布时间】:2020-10-24 19:58:12
【问题描述】:

我想通过忽略NA 的群组使用cummean。这是示例数据。

data.frame(group1 = c(rep(1,3),rep(2,3),rep(3,3)),
           val = c(c(NA,4,5),c(NA,NA,5),c(1,NA,3)))

如何通过忽略NA 来获得累积平均值?

这是我想要的结果

c(NA,4,4.5,NA,NA,5,1,1,2)

【问题讨论】:

标签: r dplyr


【解决方案1】:

在计算cummean时,我们可以使用replace忽略NA元素

library(dplyr)
library(tidyr)
df1 %>%
     group_by(group1) %>%
     mutate(new = replace(val, !is.na(val), cummean(val[!is.na(val)]))) %>%
     fill(new)

-输出

# A tibble: 9 x 3
# Groups:   group1 [3]
#  group1   val   new
#   <dbl> <dbl> <dbl>
#1      1    NA  NA  
#2      1     4   4  
#3      1     5   4.5
#4      2    NA  NA  
#5      2    NA  NA  
#6      2     5   5  
#7      3     1   1  
#8      3    NA   1  
#9      3     3   2  
 

【讨论】:

  • 我忽略 NA 不将其视为零。你能看看想要的输出吗?
  • @Johnlegend2 我认为在预期的输出中,您显示的是 5 1 1 2 而不是 5 1 NA 2,因为输入中的第 8 个 obs 是 NA
  • 非常感谢。我怎样才能得到想要的输出?我可以在第 8 行有非 NA 值吗?
  • @Johnlegend2 你可以用fill更新帖子
猜你喜欢
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2016-07-11
  • 2022-01-04
  • 1970-01-01
  • 2016-05-28
  • 2018-07-14
相关资源
最近更新 更多