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

R语言如何使用strsplit将两列对应有序字符串拆分至数据框多行

配对拆分逗号分隔字段为独立行的实现方案

你需要将两列一一对应的逗号分隔字符串按位置拆分、展开为独立数据行,核心是保证两列拆分后的元素顺序严格匹配,同时清理分隔后多余的空格,以下是可直接复现结果的代码方案:

基础R方案(无需安装第三方包)

直接用strsplit拆分字段,搭配trimws清理空格,因为原始数据每一行的两列拆分后元素数量完全对应,直接拆包重组即可得到正确结果:

# 构造示例数据
df <- data.frame(
  suburb = c("yellow, blue", "orange, yellow", "blue", "green, yellow"), 
  postcode = c("a9,  b9", "c9, a9", "b9", "d9, a9")
)

# 按逗号拆分两列,同时去除元素前后的多余空格
split_suburb <- lapply(strsplit(df$suburb, split = ","), trimws)
split_postcode <- lapply(strsplit(df$postcode, split = ","), trimws)

# 重组为目标数据框
result <- data.frame(
  suburb = unlist(split_suburb),
  postcode = unlist(split_postcode)
)

Tidyverse方案(适配管线工作流)

如果日常使用dplyr/tidyr进行数据处理,可以直接用separate_rows函数同时对多列做行展开,代码更简洁:

library(dplyr)
library(tidyr)

result <- df %>%
  # 同时对两列按逗号做行拆分
  separate_rows(c(suburb, postcode), sep = ",") %>%
  # 清理拆分后残留的前后空格
  mutate(across(c(suburb, postcode), trimws))

运行上述任意一段代码,得到的输出和预期结果完全一致:

suburb postcode
1 yellow       a9
2   blue       b9
3 orange       c9
4 yellow       a9
5   blue       b9
6  green       d9
7 yellow       a9

注意:使用以上方法需要保证每一行中,两个待拆分字段按逗号分割后的元素数量完全相等,否则会出现元素错位的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:33:24