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

R语言拆分CSV指定列分号内容为多行并复制其余列数据

R语言实现单列按分隔符拆分为多行的方法

推荐方案(适合新手,代码简洁)

推荐使用tidyverse生态中的separate_rows()函数,该函数就是为这类拆分场景设计的,无需复杂逻辑即可实现需求。

  • 第一步:安装并加载依赖包(已安装可跳过安装步骤)
install.packages("tidyverse")
library(tidyverse)
  • 第二步:读取制表符分隔的csv文件
# 替换引号内的内容为你的实际文件路径
df <- read_tsv("你的文件路径.csv")
  • 第三步:拆分Column3列为多行,自动复制其余列内容
    sep = ";\\s*"表示分隔符为分号+任意数量的空格,拆分后会自动去除内容前后的多余空格,和你提供的数据格式适配:
result <- separate_rows(df, Column3, sep = ";\\s*")
  • 第四步:导出结果(可选)
write_tsv(result, "拆分后结果.csv")

你可以先运行以下测试代码验证效果,无需导入自己的文件:

# 构造和你示例一致的测试数据
test_df <- tribble(
  ~Column1, ~Column2, ~Column3, ~Column4,
  123, "a", "v; w", "t",
  456, "b", "x; y; z", "u"
)
# 执行拆分
test_result <- separate_rows(test_df, Column3, sep = ";\\s*")
# 打印结果,和你预期的输出完全一致
print(test_result)

纯Base R实现(无需安装第三方包)

如果你不想安装额外依赖,可以用基础R函数实现:

# 读取文件
df <- read.delim("你的文件路径.csv", sep = "\t", stringsAsFactors = FALSE)
# 逐行拆分合并
result <- do.call(rbind, lapply(1:nrow(df), function(i) {
  split_parts <- unlist(strsplit(trimws(df$Column3[i]), ";\\s*"))
  cbind(df[i, setdiff(colnames(df), "Column3"), drop = FALSE], Column3 = split_parts)
}))
# 重置行号
rownames(result) <- NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 01:45:02