Хорошо, вот что вы можете сделать, чтобы получить желаемый результат так, как я его понимаю. По сути, вы хотите separate
столбец gene
на несколько columns
, сохраняя при этом domain
. В tidyr
есть функция separate_rows
, которая может это сделать.
library(tidyr)
gene_domains_out <- separate_rows(gene_domains, gene,sep=",")
Пример входных данных
Вот dput
изображения выше
#dput(head(gene_domains))
structure(list(domain = c(1L, 3L, 4L, 5L, 6L, 7L), gene = c("ENSG00000230594,ENSG00000171155,ENSG00000224089,ENSG00000230347,ENSG00000236446,ENSG00000186471,ENSG00000101892,ENSG00000182890,ENSG00000232119,ENSG00000131721,ENSG00000101882,ENSG00000101883,ENSG00000242362,ENSG00000226685,ENSG00000125352,ENSG00000236126,ENSG00000237957,ENSG00000005893,ENSG00000125355,ENSG00000226600,ENSG00000125356,ENSG00000203989,ENSG00000226929,ENSG00000228517,ENSG00000177485,ENSG00000226023,ENSG00000236371,ENSG00000278646,ENSG00000158290",
"ENSG00000176774,ENSG00000176746,ENSG00000232030,ENSG00000188408",
"ENSG00000198205,ENSG00000215174,ENSG00000165591,ENSG00000198455,ENSG00000186787,ENSG00000204271,ENSG00000147059",
"ENSG00000029993,ENSG00000166049,ENSG00000183862,ENSG00000102181,ENSG00000013619,ENSG00000130032,ENSG00000171100,ENSG00000160131,ENSG00000063601,ENSG00000147378,ENSG00000102195",
"ENSG00000147099,ENSG00000067177,ENSG00000184388,ENSG00000225396,ENSG00000268994,ENSG00000198034,ENSG00000125931,ENSG00000269502,ENSG00000184911,ENSG00000275520",
"ENSG00000102081,ENSG00000176988")), row.names = c(NA, 6L), class = "data.frame")
Пример вывода
Вот dput
выходных данных
#dput(head(gene_domains_out))
structure(list(domain = c(1L, 1L, 1L, 1L, 1L, 1L), gene = c("ENSG00000230594",
"ENSG00000171155", "ENSG00000224089", "ENSG00000230347", "ENSG00000236446",
"ENSG00000186471")), row.names = c(NA, 6L), class = "data.frame")
Надеюсь, что это поможет.