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

如何用R(tidyverse)拆分CSV分号分隔物种列并重复对应方法列?

用R语言(tidyverse)拆分CSV中多物种单元格并生成新文件

问题描述

收到一份CSV格式数据集,前3行内容如下:

Species,Methods
Chlamydomonas pisiformis; Stichococcus bacillaris; Stichococcus subtilis; Pleurococcus vulgaris; Scenedesmus sp.; Kirchneriella sp.; Chlorococcum humicola; Protosiphon botryoides; Stigeoclonium tenue; Oedogonium sp.; Vaucheria sp.; Conjugales; Botrydium granulatum; Botrydiopsis sp.; ,Micropicking; Subculturing
Eutreptiella gymnastica; Cryptomonas sp; Rhodomonas sp,Phototaxis
Symbiodinium sp.,Amoebic digestion

其中Species列的单元格用分号分隔多个物种名称,需要将其处理为每个物种单独一行,对应Methods列内容重复显示,最终输出的output.csv格式如下:

Species,Methods
Chlamydomonas pisiformis,Micropicking; Subculturing
 Stichococcus bacillaris,Micropicking; Subculturing
 Stichococcus subtilis,Micropicking; Subculturing
 Pleurococcus vulgaris,Micropicking; Subculturing
 Scenedesmus sp.,Micropicking; Subculturing
 Kirchneriella sp.,Micropicking; Subculturing
 Chlorococcum humicola,Micropicking; Subculturing
 Protosiphon botryoides,Micropicking; Subculturing
 Stigeoclonium tenue,Micropicking; Subculturing
 Oedogonium sp.,Micropicking; Subculturing
 Vaucheria sp.,Micropicking; Subculturing
 Conjugales,Micropicking; Subculturing
 Botrydium granulatum,Micropicking; Subculturing
 Botrydiopsis sp.,Micropicking; Subculturing
Eutreptiella gymnastica,Phototaxis
 Cryptomonas sp,Phototaxis
 Rhodomonas sp,Phototaxis
Symbiodinium sp.,Amoebic digestion

解决方案(tidyverse兼容)

可以用tidyverse中的tidyr::separate_rows函数快速实现需求,步骤如下:

  1. 加载tidyverse包
library(tidyverse)
  1. 读取原始CSV文件
df <- read_csv("input.csv")
  1. 拆分Species列并清理数据
df_processed <- df %>%
  # 按分号拆分Species列,每个物种单独成行
  separate_rows(Species, sep = ";") %>%
  # 移除因多余分号产生的空物种行
  filter(Species != "") %>%
  # 若需要去除物种名前后的空格,取消下方注释
  # mutate(Species = str_trim(Species)) %>%
  # 确保列顺序与需求一致
  select(Species, Methods)
  1. 导出处理后的结果到output.csv
write_csv(df_processed, "output.csv", na = "")

代码说明

  • separate_rows:自动将指定列中分隔符分隔的内容拆分为多行,同时保留其他列的对应值;
  • filter(Species != ""):处理原始数据中末尾多余分号导致的空物种行;
  • str_trim(Species):可选操作,用于去除物种名称前后的空格,若需要和示例输出完全一致(保留空格)则无需启用。

内容的提问来源于stack exchange,提问作者Ginko-Mitten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:03:19