R语言使用tidyr::fill函数填充缺失值失败及报错问题求助
R语言tidyr包fill函数异常解决方案
错误原因
- 传入向量报错:
tidyr::fill()是针对数据框/tibble设计的函数,不支持直接传入data$Bond2这类单列向量作为输入,因此触发类匹配错误。 - 无填充效果:
- 新版本tidyr要求显式指定需要填充的列,未指定列的情况下不会对任何数据执行填充操作
- fill默认填充方向为
down(向下填充,用当前位置上方最近的非NA值填充下方NA),如果数据开头存在NA,上方没有有效值的情况下这部分NA不会被默认逻辑填充
正确操作代码
1. 填充所有Bond列
如果你需要用上方有效值填充所有Bond列的中间、尾部NA,执行以下代码:
library(tidyr) # .direction参数可按需调整:down向下/up向上/downup先下后上/updown先上后下 data <- fill(data, Bond2, Bond3, Bond5, Bond6, .direction = "down")
如果需要同时填充开头的两行NA,将.direction改为"updown"即可,函数会先向上填充开头的NA,再向下填充后续的NA。
2. 仅填充指定单列
如果只需要填充Bond2一列,执行以下代码:
data <- fill(data, Bond2, .direction = "down")
内容的提问来源于stack exchange,提问作者eBopBob
相关产品推荐
相关产品推荐

