You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将数据框姓名列的空格替换为点分隔符

R数据框中将姓名列空格替换为点的实现方法

首先使用提供的测试数据做演示:

df <- data.frame (name  = c("Wayne Ribbon", "Rio Mansey", "Alexandre Trakovski"),
                  age = c(38,54,29))

以下是几种常用的实现方案,可根据自己的代码习惯选择:

  • 原生R实现(无依赖,兼容性最强)
    用R自带的gsub()做全局字符串替换,不需要安装任何第三方包,所有R环境都可直接运行:
    # 匹配所有空格替换为点
    df$name <- gsub(" ", ".", df$name)
    
    如果数据里可能存在多个连续空格、制表符等空白字符,可以将匹配规则改为"\\s+",匹配任意长度的空白内容替换为单个点,避免出现连续点的异常格式。如果确定姓名里只有1个分隔空格,也可以用sub()替换第一个匹配的空格,效果一致。
  • stringr包实现(适配tidyverse工作流)
    如果你日常使用tidyverse生态做数据清洗,stringr::str_replace_all()的语法更统一,和dplyr管道配合写起来更流畅:
    # 首次使用先安装:install.packages("stringr")
    library(stringr)
    library(dplyr)
    
    df <- df %>%
      mutate(name = str_replace_all(name, " ", "."))
    
    同样支持"\\s+"正则规则处理多空白场景。
  • 拆分拼接法(便于校验姓名格式)
    如果后续需要单独提取名、姓字段,或者需要排查姓名格式异常(比如存在中间名、缺省值),可以先按空格拆分字段,再用点拼接:
    # 首次使用先安装:install.packages("tidyr")
    library(tidyr)
    library(dplyr)
    
    df <- df %>%
      separate(name, into = c("first_name", "last_name"), sep = " ") %>%
      unite("name", first_name, last_name, sep = ".", remove = TRUE)
    
    这种方法会在拆分时自动提示格式不符合预期的行,方便提前做数据清洗。

以上任意方法运行后,得到的结果均符合预期:

name age
1        Wayne.Ribbon  38
2          Rio.Mansey  54
3 Alexandre.Trakovski  29

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:27:24