У меня есть данные, что выглядит следующим образом:dcast с пользовательскими fun.aggregate
sample start end gene coverage
X 1 10 A 5
X 11 20 A 10
Y 1 10 A 5
Y 11 20 A 10
X 1 10 B 5
X 11 20 B 10
Y 1 10 B 5
Y 11 20 B 10
Я добавил дополнительные колонки:
data$length <- (data$end - data$start + 1)
data$ct_lt <- (data$length * data$coverage)
Я reformated мои данные с помощью dcast:
casted <- dcast(data, gene ~ sample, value.var = "coverage", fun.aggregate = mean)
Таким образом, мои новые данные выглядят так:
gene X Y
A 10.00000 10.00000
B 38.33333 38.33333
Это правильный формат данных, который я желаю, но хотел бы, чтобы fun.aggregate по-разному. Вместо этого, я хотел бы принять взвешенное среднее, с покрытием, взвешенных по длине:
(сумма (ct_lt))/(сумма (длина))
Как идти об этом?
спасибо, это была большая помощь. – RedPandaSpaceOdyssey