У меня есть фрейм данных, который содержит несколько разных анализов, каждый из которых состоит из нескольких строк данных.Я хочу вычислить среднее значение только для нескольких строк из каждого анализа, и какие линии они варьируются от анализа к анализу.Существует один кадр данных, содержащий анализы, а другой - номера начальной и конечной строк, требуемые для среднего значения каждого анализа.Ниже приведен простой пример.
Анализы
df1 <- structure(list(analysis = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L),
line = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L),
value = c(4.8, 9.8, 7.1, 7.4, 7.4, 3.3, 4.5, 8.7, 3.9, 3.6, 1.9, 9.4, 0.9, 0.6, 2.1, 6.1, 5.3, 4.7, 9.7, 8.6, 8.9, 3.4, 8.7, 7.1)),
class = "data.frame", row.names = c(NA, -24L))
Номера начальной и конечной строк, по которым я хотел бы получить среднее значение для каждого анализа:
df2 <- structure(list(analysis = 1:3,
startnum = c(3L, 3L, 2L),
endnum = c(7L, 6L, 4L)),
class = "data.frame", row.names = c(NA, -3L))
IПредставьте, что итоговый фрейм данных будет выглядеть так:
structure(list(analysis=1:3,
avgval=c(5.94, 3.2, 7.67)),
class = "data.frame", row.names = c(NA, -3L))
Я считаю, что ответ прост для семейства 'apply', но не могу придумать, как это сделать.Я могу преобразовать кадры данных в списки для «lapply», но не знаю, как действовать дальше.
Заранее большое спасибо, -R