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

求助:如何拆分dataframe中Students列的姓名?

拆分R语言DataFrame中Students列的姓名方法

以下几种实用方法可实现需求:

方法1:使用tidyverse包的separate函数

这是处理数据框列拆分最常用的方式,语法简洁易读:

# 先安装并加载tidyverse包(首次使用需安装)
# install.packages("tidyverse")
library(tidyverse)

# 拆分Students列为名(First_Name)和姓(Last_Name),按空格分隔
Class.perf_split <- Class.perf %>%
  separate(Students, into = c("First_Name", "Last_Name"), sep = " ", extra = "merge")

extra = "merge" 参数确保如果姓名包含多个空格(比如多部分的姓),会将剩余部分合并到Last_Name列,避免报错。

方法2:基础R原生方法(无需额外包)

如果不想加载第三方包,可使用基础R的strsplit函数:

# 拆分Students列得到姓名列表
name_list <- strsplit(Class.perf$Students, " ")

# 将列表转换为数据框,处理多部分姓名
name_df <- do.call(rbind, lapply(name_list, function(x) {
  data.frame(
    First_Name = x[1],
    Last_Name = if(length(x) > 1) paste(x[-1], collapse = " ") else NA
  )
}))

# 合并到原数据框
Class.perf_split <- cbind(Class.perf, name_df)

方法3:使用data.table包(适合大数据集)

如果你的数据量较大,data.table的拆分效率更高:

# 安装并加载data.table包(首次使用需安装)
# install.packages("data.table")
library(data.table)

# 转换为data.table格式并拆分
setDT(Class.perf)
Class.perf[, c("First_Name", "Last_Name") := tstrsplit(Students, " ", keep = c(1, Inf))]

keep = c(1, Inf) 表示保留第一部分作为名,剩余所有部分合并为姓,适配复杂姓名格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:23:16