Как записать данные в блок таблицы построчно в R - PullRequest
0 голосов
/ 02 октября 2019

Есть ли способ записать данные в блок таблицы строка за строкой в ​​R?

Буду благодарен, если кто-нибудь найдет мне решение. Спасибо.

Это входные данные в tad .

structure(list(gene = structure(c(4L, 7L, 2L, 10L, 1L, 9L, 6L, 
3L, 8L, 5L), .Label = c("ENSG00000065243", "ENSG00000084070", 
"ENSG00000127423", "ENSG00000135801", "ENSG00000163909", "ENSG00000174950", 
"ENSG00000183615", "ENSG00000197056", "ENSG00000203857", "ENSG00000204060"
), class = "factor"), domain = c(9L, 1L, 5L, 1L, 9L, 2L, 1L, 
4L, 6L, 6L)), row.names = c(NA, 10L), class = "data.frame")

Это код, который я использовал.

colnames(tad)<-c("gene", "domain")
domain_result= aggregate(gene~domain, tad, paste, collapse = ",")

Это вывод

Мне нужно, чтобы это было построчно. Например, в первой строке данные такие. ENSG00000183615, ENSG00000204060, ENSG00000174950 Но мне нужно, чтобы он был построчно.

1 Ответ

1 голос
/ 02 октября 2019

Хорошо, вот что вы можете сделать, чтобы получить желаемый результат так, как я его понимаю. По сути, вы хотите separate столбец gene на несколько columns, сохраняя при этом domain. В tidyr есть функция separate_rows, которая может это сделать.

library(tidyr)

gene_domains_out <- separate_rows(gene_domains, gene,sep=",")

Пример входных данных

head_gene

Вот 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")

Пример вывода

head_gene_output

Вот 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")

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...