Объединить значения в один столбец, разделенный запятой

#r #dplyr

#r #dplyr

Вопрос:

У меня есть фрейм данных с 2 столбцами. И я хочу объединить имена в столбце GO в одну и ту же ячейку, разделенные запятой всякий раз, когда они имеют одинаковое имя в целевых значениях столбцов.

 head(a)

                           targets         GO
1 TRINITY_GG_100008_c0_g1_i8.mrna1 GO:0030515
2 TRINITY_GG_100008_c0_g1_i8.mrna1 GO:0030515
3 TRINITY_GG_100016_c0_g1_i1.mrna1 GO:0003996
4 TRINITY_GG_100016_c0_g1_i1.mrna1 GO:0004467
5 TRINITY_GG_100016_c0_g1_i1.mrna1 GO:0047676
6 TRINITY_GG_100016_c0_g1_i1.mrna1 GO:0102391

> dput(a)
structure(list(targets = c("TRINITY_GG_100008_c0_g1_i8.mrna1", 
"TRINITY_GG_100008_c0_g1_i8.mrna1", "TRINITY_GG_100016_c0_g1_i1.mrna1", 
"TRINITY_GG_100016_c0_g1_i1.mrna1", "TRINITY_GG_100016_c0_g1_i1.mrna1", 
"TRINITY_GG_100016_c0_g1_i1.mrna1"), GO = c("GO:0030515", "GO:0030515", 
"GO:0003996", "GO:0004467", "GO:0047676", "GO:0102391")), row.names = c(NA, 
6L), class = "data.frame")
 

Я пробовал это до сих пор, используя dplyr, но я еще не там.

 a %>% group_by(targets) %>%
    summarize(GO, sep","))
 

Я хочу, чтобы результаты выглядели так:

                          targets         GO
TRINITY_GG_100008_c0_g1_i8.mrna1       GO:0030515, GO:0030515 
TRINITY_GG_100016_c0_g1_i1.mrna1       GO:0003996, GO:0004467, GO:0047676, GO:0102391
 

Надеюсь, кто-нибудь сможет мне помочь!
Спасибо

Комментарии:

1. Посмотрите на toString функцию.

2. Спасибо, я только что решил это. Наверное, я слишком быстро задал вопрос. a %>% group_by(targets) %>% summarise_all(funs(paste(na.omit(.), collapse = ",")))

3. Вы можете самостоятельно ответить на вопрос и пометить его как принятый, чтобы показать, что он был решен.

Ответ №1:

К счастью, все решилось довольно быстро. Это ответ на случай, если у кого-нибудь возникнет такая же проблема в будущем.

 a %>% group_by(targets) %>% 
summarise_all(funs(paste(na.omit(.), collapse = ",")))