У меня сложный вопрос, поэтому буду признателен за ваше терпение.
Для каждой точки данных я хотел бы сначала получить значения из столбцов запаздывания и опережения, а затем определить эти значения в серии для моего набора данных.и вычислите медианное значение, используя захваченные значения для каждой группы.
![enter image description here](https://i.stack.imgur.com/hrSFp.png)
Group,Date,Month,Sales,lag,lead
Group1,42005,1,2503,0,2
Group1,42036,2,3734,0,2
Group1,42064,3,6631,2,3
Group1,42095,4,8606,0,0
Group1,42125,5,1889,0,2
Group1,42156,6,4819,1,2
Group1,42186,7,3294,1,0
Group1,42217,8,38999,2,0
Group1,42248,9,28372,1,0
Group1,42278,10,25396,4,1
Group1,42309,11,21093,1,0
Group2,42339,1,9263,0,3
Group2,42005,2,6660,1,3
Group2,42036,3,28595,2,2
Group2,42064,4,123,2,0
Group2,42095,5,11855,3,3
Group2,42125,6,15845,4,3
Group2,42156,7,32331,2,2
Group2,42186,8,3188,1,1
Group2,42217,9,38161,4,0
Например, если мы посмотрим на 6-й месяц для группы 1,значение Sales - 4819, значение задержки и опережения - 1 и 2 соответственно.Я хотел бы сначала захватить значения отставания и опережения, а затем vlookup в серии.Для 4819, для лага (значение = 1), я хотел бы перейти к одному пункту данных выше 4819 (что составляет 1889, aka 4819-> 1889, аналогично для свинца (значение = 2), я хотел бы перейти к двум точкам данныхниже 4891, то есть 3294 и 38999. Итак, теперь точки захвата для 4819 точек данных - это 1899, 4819, 3294 и 38999, поэтому теперь я хотел бы взять медиану этого и сохранить ее в своем выводе. Это упражнение, которое я хочу выполнитьсделать для каждой группы.
Точно так же, для Группы 2, Месяц 4, я хотел бы взять данные о предыдущих двух точках задержки со ссылкой на 123 (опережение равно нулю, следовательно, оно не будет захвачено), и взять медиануиз всех 3 значений.
Я попробовал то же самое для одного конкретного случая с условием ifelse, чтобы посмотреть, как оно работает.
df $ output <- ifelse (lag == 0 & lead == 1, медиана (Sales, lead (Sales, 1)), 0) </strong>
Результат был очень удивительным. R взяла медиану всех значений для столбца. Другойпроблема в том, что даже если бы это сработало, мне пришлось бы написать несколько условий ifelseследовательно, ищу более простое решение.
Не уверен, как подходить к проблеме и выполнять упражнение для каждой группы в R.
Ниже приведен результат, которого я пытаюсь достичь.
Group,Date,Month,Sales,lag,lead,Output
Group1,42005,1,2503,0,2,3734
Group1,42036,2,3734,0,2,6631
Group1,42064,3,6631,2,3,4276.5
Group1,42095,4,8606,0,0,8606
Group1,42125,5,1889,0,2,3294
Group1,42156,6,4819,1,2,4056.5
Group1,42186,7,3294,1,0,4056.5
Group1,42217,8,38999,2,0,4819
Group1,42248,9,28372,1,0,33685.5
Group1,42278,10,25396,4,1,23244.5
Group1,42309,11,21093,1,0,23244.5
Group2,42339,1,9263,0,3,7961.5
Group2,42005,2,6660,1,3,9263
Group2,42036,3,28595,2,2,9263
Group2,42064,4,123,2,0,6660
Group2,42095,5,11855,3,3,11855
Group2,42125,6,15845,4,3,13850
Group2,42156,7,32331,2,2,15845
Group2,42186,8,3188,1,1,32331
Group2,42217,9,38161,4,0,15845
Любые выводы будут высоко оценены.
Я что-то упустил.пожалуйста, покажите мне, как решить эту проблему.Если есть какая-то функция, которую мне нужно использовать, пожалуйста, помогите мне с ней.
Спасибо,