R语言中如何用NA补全有序整数序列?示例解析
补全有序向量为连续序列并填充缺失值为NA
针对你的需求,这里提供两种简便实现方法,分别基于基础R和tidyverse工具集:
方法一:基础R实现
核心逻辑是先生成从原向量最小值到最大值的完整连续序列,再将原向量中不存在的位置替换为NA:
x <- c(3, 4, 6, 8, 9, 10, 18) # 生成完整连续序列 full_range <- seq(min(x), max(x)) # 替换缺失值为NA result <- full_range result[!full_range %in% x] <- NA # 查看结果 result #> [1] 3 4 NA 6 NA 8 9 10 NA NA NA NA NA NA NA 18
也可以用更简洁的ifelse一行式写法:
result <- ifelse(seq(min(x), max(x)) %in% x, seq(min(x), max(x)), NA)
方法二:tidyverse实现
如果你习惯使用tidyverse生态,可借助dplyr::complete快速完成补全:
library(dplyr) library(tidyr) x <- c(3, 4, 6, 8, 9, 10, 18) result <- tibble(value = x) %>% complete(value = seq(min(value), max(value))) %>% pull(value) result #> [1] 3 4 NA 6 NA 8 9 10 NA NA NA NA NA NA NA 18
内容的提问来源于stack exchange,提问作者Maël
相关产品推荐
相关产品推荐

