У меня есть этот фрейм данных:
df <- data.frame( Date = c("2017-02-23", "2017-02-23", "2017-02-23", "2017-02-23", "2017-02-23", "2017-02-23", "2017-02-25"),
idx = c(1, 2, 3, 4,5, 6, 3),
Temp = c(2, 5, 12, 12,12, 1, 5),
idy= c(1, 3, 1, 6, 2, 5, 9))
где idx и idy - ссылки, а Temp - температуры.
Я хотел бы заменить значения в Temp> 10 следующим образом.
В этом случае для Temp = 12, idy - это 1,6,2, и если вы сравните этот idy с idx
принять среднее значение температуры этого idx. , Извините, но это трудно объяснить. Вот что я хочу:
df <- data.frame( Date = c("2017-02-23", "2017-02-23", "2017-02-23", "2017-02-23", "2017-02-23", "2017-02-23", "2017-02-25"),
idx = c(1, 2, 3, 4, 5, 6, 3),
Temp = c(2, 5, 2.66, 2.66, 2.66, 1, 5),
idy= c(1, 3, 1, 6, 2, 5, 9))
, где 2.66 = (2 + 5 + 1) / 3, которые являются значениями idx = idy температуры выше 10.
Я пытался с этим:
df = df %>% group_by(Date) %>% mutate( Temp = ifelse ( Temp >10 , mean(Temp[idy =idx] , na.rm = TRUE), Temp))
Но среднее значение не рассчитывается надлежащим образом. Значение составляет 7,33 вместо 2,66.