如何用R函数将单元格内逗号分隔值拆分为同分组的多行数据?
在R中拆分逗号分隔列并展开数据框
首先构造你的示例数据:
df <- data.frame( Orthogroup = c(0, 1), Sequences = c("Seq1, Seq2, Seq3", "Seq4"), stringsAsFactors = FALSE )
方法一:使用tidyr包(tidyverse生态)
这是最简洁高效的方式,首次使用需先安装包:
install.packages("tidyr") library(tidyr) # 拆分Sequences列并自动展开数据框 result_df <- separate_rows(df, Sequences, sep = ",\\s*") # 重命名列名匹配需求 colnames(result_df)[2] <- "Sequence"
sep = ",\\s*"用于匹配逗号及后续任意数量的空格,确保拆分后的序列名不带多余空格。
方法二:Base R原生实现(无需额外包)
如果不想加载第三方包,用基础R函数即可完成:
# 拆分每个Sequences元素为列表 seq_list <- strsplit(df$Sequences, ",\\s*") # 根据每个组的序列数量重复Orthogroup值 orthogroup_rep <- rep(df$Orthogroup, sapply(seq_list, length)) # 组合成目标数据框 result_df <- data.frame( Orthogroup = orthogroup_rep, Sequence = unlist(seq_list), stringsAsFactors = FALSE )
运行上述任意方法后,result_df即为你需要的格式:
| Orthogroup | Sequence |
|---|---|
| 0 | Seq1 |
| 0 | Seq2 |
| 0 | Seq3 |
| 1 | Seq4 |
内容的提问来源于stack exchange,提问作者Kelsey Beavers
相关产品推荐
相关产品推荐

