na.approx 仅当列中少于 3 个连续 NA 时

revans00
mydata <-data.frame(group = c(1,1,1,1,1,2,2,2,2,2), score = c(10, NA, NA, 20, 30, 5, NA, NA, NA, 40)) 

当“值”中最近的非 NA 条目之间的连续 NA 少于 3 个时,我试图从“mydata”dplyr中插入“x na.approx”。内插的 x 值存储在“x_approx”中。

如果没有“值”中连续 NA 数量的条件,我使用以下代码:

library(zoo)
mydata %>%
     group_by(group) %>%
     mutate(score_approx = na.approx(score)) %>%
     mutate(score_approx = coalesce(score_approx,score))

mydata
# A tibble: 10 x 3
# Groups:   group [2]
   group score score_approx
   <dbl> <dbl>        <dbl>
 1     1    10         10  
 2     1    NA         13.3
 3     1    NA         16.7
 4     1    20         20  
 5     1    30         30  
 6     2     5          5  
 7     2    NA         13.8
 8     2    NA         22.5
 9     2    NA         31.2
10     2    40         40

但是,所需的数据帧是:

# A tibble: 10 x 3
# Groups:   group [2]
   group score score_approx
   <dbl> <dbl>        <dbl>
 1     1    10         10  
 2     1    NA         13.3
 3     1    NA         16.7
 4     1    20         20  
 5     1    30         30  
 6     2     5          5  
 7     2    NA         NA
 8     2    NA         NA
 9     2    NA         NA
10     2    40         40
罗纳克·沙阿

您可以使用maxgap参数na.approx-

library(dplyr)
library(zoo)

mydata %>%
  group_by(group) %>%
  mutate(score_approx = na.approx(score, maxgap = 2)) %>%
  ungroup

#   group score score_approx
#   <dbl> <dbl>        <dbl>
# 1     1    10         10  
# 2     1    NA         13.3
# 3     1    NA         16.7
# 4     1    20         20  
# 5     1    30         30  
# 6     2     5          5  
# 7     2    NA         NA  
# 8     2    NA         NA  
# 9     2    NA         NA  
#10     2    40         40  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

反向/反向 na.approx

na.approx 具有多个特定列

仅当所有 3 列都具有 NA 时,R 从 3 列中删除 NA 值

在 R 中的行和输出数据帧上应用 na.approx

使用na.approx或na.spline替换矩阵数据的NA

na.approx函数无法产生正确的时间戳

R:approx(sp$y, sp$x, xout = cutoff) :需要至少两个非 NA 值进行插值

摆脱母题列中连续的na

如何删除一列中超过2个连续的NA?

mutate不适用于na.spline / na.approx

在数据框中随机选择20个连续值,并将其替换为NA

在连续图的ggplot图例中添加一个NA值框

仅当所有元素都是大熊猫中的groupby中的NA时,如何删除NA

当存在非NA值时,如何返回不包含NA的组中的第一个元素

刻面时抑制NA列

当R中的粘贴列中存在NA时,使粘贴列值NA

在data.table和pipe中正确使用na.approx

R:在“收益率”列中删除NA大于3的县,并对NA小于3的县使用na.spline

在R的特定列中选择具有全部或少于n个NA的行

卸货时放下NA

想要在大型数据集的每一行中检测> = 8个非NA的连续元素(即is.na()== FALSE)

计算由数据帧 R 中的另一个变量分组的最大连续重复非 NA 值

用最后一个不是 NA 的值填充 NA 列值(na.locf by column)

按年份汇总数据,并且仅当该年度列中的值时才覆盖行中的NA

R:删除少于20个非“ NA”值的行

过滤每个条件少于 4 个 NA 的行

比较两个日期时如何正确忽略NA?

计算连续的非NA项目

在R中按行检查前3个非NA元素中是否存在零