我正在使用data.table
R 中的一个,其中多个字段可以包含多个用分号分隔的值。我试图将这些值分成单独的行,每个值对应于表中的一个新行。但挑战在于各个单独的领域是相关的,需要相应的拆分和扩展。
示例数据:
library(data.table)
df <- data.table(probe = c('A', 'B', 'C'), # there are many columns in real data
gene = c('geneA', 'geneB;geneC', 'geneD;geneH;geneI;geneO'),
type = c('mRNA', 'mRNA;miRNA', 'mRNA;miRNA;mRNA;miRNA'))
df
probe gene type
1: A geneA mRNA
2: B geneB;geneC mRNA;miRNA
3: C geneD;geneH;geneI;geneO mRNA;miRNA;mRNA;miRNA
预期输出:
df.new <- data.table(probe = c('A', 'B', 'B', 'C', 'C', 'C', 'C'),
gene = c('geneA', 'geneB', 'geneC', 'geneD', 'geneH', 'geneI', 'geneO'),
type = c('mRNA', 'mRNA', 'miRNA', 'mRNA', 'miRNA', 'mRNA', 'miRNA'))
df.new
probe gene type
1: A geneA mRNA
2: B geneB mRNA
3: B geneC miRNA
4: C geneD mRNA
5: C geneH miRNA
6: C geneI mRNA
7: C geneO miRNA
感谢您的好意建议
一种方法使用
strsplit
您可以使用
separate_longer_delim
来自{tidyr}
.使用
splitstackshape
包: