R: Как добавить значения 2 отдельных столбцов, если третий столбец имеет то же значение - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть большой фрейм данных, подобный приведенному ниже:

 #   project  sample   count    freq    a-chain    b-chain   v
 1   house    1_1      124      0.98    ZZZZZ      tttcc     4
 2   house    1_1       20      0.02    BBBBB      xxwww     5
 3   house    1_1        1      0.01    ZZZZZ      tccct     2
 4   house    1_2        4      0.02    ZZZZZ      rrttt     1
 5   tree     B_1       34      0.45    TTTTT      oooee     5
 6   tree     B_1       42      0.51    RRRRR      vvvqq     7
 7   tree     C_2       43      0.77    VVVVV      iippr     9
 8   tree     B_1       72      0.34    TTTTT      xxttr     7

Мне нужно сжать количество строк, объединив те, которые имеют одинаковое значение для "project", "sample" и "a-цепочка».Мне нужно сложить значения "count" и "freq" этих строк.Результирующий кадр данных должен иметь только «project», «sample», «count», «freq» и ​​«a-chain».Я застреваю на определенной линии, но, возможно, я начал с ошибочного подхода.Любая помощь приветствуется.

Я пытался использовать комбинацию функций ddply, summaze и aggregate, но лучшее, что я могу сделать, - это только добавить один из двух столбцов, которые мне нужно сложить.

Это строкагде я застрял:

 max.count.nt<-all.tcr.max %>% group_by(project, sample) %> summarise(count=sum(count)) %>% select(project,sample, count, freq, a-chain)

В некоторых случаях я получаю "объект freq не найден"

Вот что я должен получить:

project    sample    count   freq    a-chain
house      1_1       125     0.99    ZZZZZ
house      1_1        20     0.02    BBBBB
house      1_2         4     0.02    ZZZZZ
tree       B_1       106     0.79    TTTTT
tree       B_1        42     0.51    RRRRR
tree       C_2        43     0.77    VVVVV

1 Ответ

0 голосов
/ 27 сентября 2019

Мы можем использовать mutate для создания столбца вместо summarise, так как summarise возвращает только столбец, суммированный вместе со столбцами группировки.Позже, если необходимо, примените distinct к выбранным столбцам, чтобы вернуть первую строку

library(dplyr)
df1 %>% 
   group_by(project, sample) %>% 
   mutate(count=sum(count))%>% 
   select(project,sample, count, freq, a.chain) %>%
   ungroup %>%
   distinct(project, sample, a.chain, count, .keep_all = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...