如何在R的tibble中添加行向量补全缺失的6月观测数据
问题原因
- 你构造的补全行
d = c(6,0)是原子向量,和tibble结构的Data用rbind合并时,会出现结构/数据类型不匹配的问题,这是12月数据异常的核心原因。 order(newdata$A)仅返回排序后的行索引,没有赋值回数据集,没有真正实现按月份重排序,数据顺序依旧混乱。
修复方案
方案1:修正原有写法的问题
# 补全行也构造为tibble,和原表结构完全匹配 d <- tibble(A = 6, B = 0) # 合并两个tibble newdata <- rbind(Data, d) # 按月份A列排序,排序结果要赋值回newdata才会生效 newdata <- newdata[order(newdata$A), ]
方案2:使用tidyverse原生函数补全(更推荐)
针对时间序列缺失值补全场景,直接用tidyr::complete函数,无需手动处理合并、排序逻辑,稳定性更高:
library(tidyverse) newdata <- Data %>% # 指定月份A的取值范围为1-12,缺失的B列填充为0 complete(A = 1:12, fill = list(B = 0))
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

