如何用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函数快速实现需求,步骤如下:
- 加载tidyverse包
library(tidyverse)
- 读取原始CSV文件
df <- read_csv("input.csv")
- 拆分Species列并清理数据
df_processed <- df %>% # 按分号拆分Species列,每个物种单独成行 separate_rows(Species, sep = ";") %>% # 移除因多余分号产生的空物种行 filter(Species != "") %>% # 若需要去除物种名前后的空格,取消下方注释 # mutate(Species = str_trim(Species)) %>% # 确保列顺序与需求一致 select(Species, Methods)
- 导出处理后的结果到output.csv
write_csv(df_processed, "output.csv", na = "")
代码说明
separate_rows:自动将指定列中分隔符分隔的内容拆分为多行,同时保留其他列的对应值;filter(Species != ""):处理原始数据中末尾多余分号导致的空物种行;str_trim(Species):可选操作,用于去除物种名称前后的空格,若需要和示例输出完全一致(保留空格)则无需启用。
内容的提问来源于stack exchange,提问作者Ginko-Mitten
相关产品推荐
相关产品推荐

