You need to enable JavaScript to run this app. R语言实现新增列填充匹配指定前缀的最近行的名称及编码值
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现新增列填充匹配指定前缀的最近行的名称及编码值

R 实现带层级的行政区字段填充方案

我们可以借助tidyverse套件中的dplyr和tidyr工具高效完成需求,核心逻辑是先标记层级行、再向下填充缺失值,全程不需要循环,处理万行级数据也不会有性能问题。

第一步:加载依赖包

library(tidyverse)

第二步:核心处理代码

result <- example2 %>%
  # 给对应层级的行填充值,非对应层级行暂时设为NA
  mutate(
    # 匹配以"- "开头的州(canton)行
    canton = ifelse(str_starts(municipality_name, fixed("- ")), municipality_name, NA_character_),
    canton_code = ifelse(str_starts(municipality_name, fixed("- ")), municipality_code, NA_character_),
    # 匹配以">> "开头的区(bezirk)行
    bezirk = ifelse(str_starts(municipality_name, fixed(">> ")), municipality_name, NA_character_),
    bezirk_code = ifelse(str_starts(municipality_name, fixed(">> ")), municipality_code, NA_character_)
  ) %>%
  # 向下填充所有NA值,自动取当前行之前最后一个非NA的层级值
  fill(canton, canton_code, bezirk, bezirk_code, .direction = "down")

补充说明

如果你需要让州行也能匹配到紧跟在后面的区值(比如你给出的预期输出里第一行的bezirk也有值),只需要把fill的direction参数改为"downup",就会先向下填充再向上填充首行的空缺。如果你的数据层级顺序固定为「州→区→街道」,上述代码可以直接复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:27:00