R语言如何使用最新可用有效值填充后续行的缺失值
缺失值前向填充实现方案
你需要的是用最后一次出现的非缺失值填充后续连续缺失值,这类填充方法也叫LOCF(Last Observation Carried Forward),以下是不同工具的实现方法:
示例原始数据表
Date value 2021 Jan 500 2021 Feb 2340 2021 Mar 3000 2021 Apr 249 2021 May NA 2021 Jun NA 2021 Jul NA
R 语言实现
可以用tidyr包的fill()函数,默认向下填充前值:
library(tidyr) library(dplyr) # 构造/读取数据表后执行如下代码 df <- df %>% fill(value, .direction = "down")
如果需要限制最多只填充连续3个缺失值,可添加如下逻辑:
df <- df %>% mutate(na_group = cumsum(!is.na(value))) %>% group_by(na_group) %>% mutate(value = ifelse(row_number() <= 4, first(value), value)) %>% ungroup() %>% select(-na_group)
Python 实现
用pandas的ffill()方法即可实现,可直接通过参数限制填充次数:
import pandas as pd # 读取数据后执行如下代码 df['value'] = df['value'].ffill(limit=3)
其中limit=3参数就是限制最多填充连续3个缺失值,刚好匹配你的需求。
填充后最终结果
Date value 2021 Jan 500 2021 Feb 2340 2021 Mar 3000 2021 Apr 249 2021 May 249 2021 Jun 249 2021 Jul 249
内容的提问来源于stack exchange,提问作者Dana Ann
相关产品推荐
相关产品推荐

