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

如何用R语言将DataFrame的names列按空格拆分为两列?

R语言按空格拆分DataFrame指定列的方法

原始数据

dframe <- data.frame(id = c(1,2), names = c("google analytics","amazon shop"))

目标输出

dframe <- data.frame(id = c(1,2), names1 = c("google","amazon"), names2 = c("analytics","shop"))

下面提供几种常用的实现方法:


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

这是最简洁直观的方法,适合日常数据处理:

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

# 拆分列
dframe_split <- dframe %>%
  separate(col = names, into = c("names1", "names2"), sep = " ")

# 查看结果
print(dframe_split)
  • col参数指定要拆分的目标列
  • into参数定义拆分后的新列名称
  • sep参数设置分隔符,这里直接用空格" "

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

如果不想加载第三方包,用基础R工具即可完成:

# 拆分names列,将列表结果转为矩阵
split_result <- do.call(rbind, strsplit(as.character(dframe$names), " "))
# 给矩阵设置列名
colnames(split_result) <- c("names1", "names2")
# 合并原id列与拆分后的列
dframe_split <- cbind(dframe["id"], split_result)

# 查看结果
print(dframe_split)
  • 注意先将dframe$names转为字符型(data.frame默认存储为因子类型)
  • do.call(rbind...)将列表格式的拆分结果转为矩阵,方便和原数据合并

方法3:使用data.table包的tstrsplit函数

适合处理超大型数据集,运行效率更高:

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

# 转换为data.table格式
dframe_dt <- as.data.table(dframe)
# 拆分列并直接添加到原表
dframe_dt[, c("names1", "names2") := tstrsplit(names, " ")]
# 可选操作:删除原names列
dframe_dt[, names := NULL]

# 查看结果
print(dframe_dt)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:31:18