Как объединить строки в df при добавлении значений матрицы

#r #dataframe

Вопрос:

Просто застрял на какой-то манипуляции с df. У меня есть большая матрица ASV с образцами в виде строк и таксонами в виде столбцов. Я хотел бы объединить определенные строки при добавлении значений матрицы этих строк.

Пример фрейма данных (код ниже):

введите описание изображения здесь

Я хотел бы объединить образец-1, образец-2 и образец-3 друг с другом. То же самое для образца-4 и образца-5. Объединенный набор данных будет содержать только две строки, содержащие суммирование значений для каждой предыдущей строки. (В частности, первые три строки станут одной строкой с новыми значениями ASV: ASV1=11, ASV2=14, ASV3=1, ASV4=2, ASV5=8).

 gt; dput(example.matrix) structure(list(ASV1 = c(8L, 0L, 3L, 6L, 1L), ASV2 = c(1L, 4L,  9L, 3L, 2L), ASV3 = c(1L, 0L, 0L, 1L, 1L), ASV4 = c(0L, 0L, 2L,  3L, 0L), ASV5 = c(0L, 7L, 1L, 4L, 0L)), class = "data.frame", row.names = c("sample-1",  "sample-2", "sample-3", "sample-4", "sample-5"))  

Ответ №1:

Мы можем использовать:

 library(tidyverse) df %gt;%  group_by(group = c(1,1,1,2,2)) %gt;%  summarize(across(everything(), sum))  

что дает:

 # A tibble: 2 x 6  group ASV1 ASV2 ASV3 ASV4 ASV5  lt;dblgt; lt;intgt; lt;intgt; lt;intgt; lt;intgt; lt;intgt; 1 1 11 14 1 2 8 2 2 7 5 2 3 4  

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

1. Это зависит от того, какие группы выборок вы хотите объединить. Это всегда выборка 1,2,3 против 4 и 5?