You need to enable JavaScript to run this app. 为DataFrame的`s_nummer`列空值添加700001起的连续顺序编号
优惠活动
大模型
产品
解决方案
定价
更多

为DataFrame的`s_nummer`列空值添加700001起的连续顺序编号

R 实现DataFrame指定列NA值填充连续编号方案

实现逻辑

定位s_nummer列的所有NA值,生成从700001开始、长度和NA数量一致的连续整数序列,替换到对应NA位置即可,可按需增加取值范围校验避免超出800000上限。

方案1:tidyverse(dplyr)实现

# 加载依赖包
library(dplyr)

# 导入示例数据
df <- structure(list(s_nummer = c(599999, 599999, NA, NA), eerste_voornaam = c("Debbie", 
"Debbie", "Debbie", "Debbie"), tussenvoegsel = c(NA, NA, NA, 
NA), geslachtsnaam = c("Oomen", "Oomen", "Oomen", "Oomen")), row.names = c(NA, 
-4L), class = c("tbl_df", "tbl", "data.frame"))

# 可选:校验NA数量是否超出700001-800000的范围
na_count <- sum(is.na(df$s_nummer))
if (na_count > 100000) {
  stop("NA值总数量超过100000,超出指定取值范围")
}

# 填充NA值
df <- df %>%
  mutate(s_nummer = replace(
    s_nummer,
    is.na(s_nummer),
    seq(from = 700001, length.out = na_count)
  ))

方案2:Base R 实现(无需加载第三方包)

# 导入示例数据
df <- structure(list(s_nummer = c(599999, 599999, NA, NA), eerste_voornaam = c("Debbie", 
"Debbie", "Debbie", "Debbie"), tussenvoegsel = c(NA, NA, NA, 
NA), geslachtsnaam = c("Oomen", "Oomen", "Oomen", "Oomen")), row.names = c(NA, 
-4L), class = c("tbl_df", "tbl", "data.frame"))

# 校验NA数量是否超出范围
na_count <- sum(is.na(df$s_nummer))
stopifnot("NA值总数量超过100000,超出指定取值范围" = na_count <= 100000)

# 直接赋值填充NA
df$s_nummer[is.na(df$s_nummer)] <- seq(from = 700001, length.out = na_count)

两种方案运行后,示例数据的s_nummer列结果为 599999, 599999, 700001, 700002,符合需求。


内容的提问来源于stack exchange,提问作者Debbie Oomen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 02:45:07