Estou trabalhando com um data.table
R onde vários campos podem conter vários valores separados por ponto e vírgula. Estou tentando separar esses valores em linhas individuais, com cada valor correspondendo a uma nova linha da tabela. Contudo, o desafio é que os campos separados estão relacionados e precisam ser divididos e expandidos de forma correspondente.
dados de exemplo:
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
resultado esperado:
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
Obrigado por suas sugestões gentis
Uma abordagem usando
strsplit
Você pode usar
separate_longer_delim
de{tidyr}
.Usando
splitstackshape
pacote: