#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?