df
Group, Sales,flag,Count
Paris,6738,0,15
Paris,5235,1,23
Paris,5907,1,15
Paris,5527,0,28
Paris,6934,1,27
Paris,6757,0,20
Paris,5394,1,31
Paris,5379,0,36
Paris,6266,1,40
Paris,5512,1,39
Paris,6506,1,29
Paris,5006,1,22
Paris,6465,1,17
Paris,6653,0,38
Paris,6719,0,12
New York,5333,1,19
New York,6763,1,37
New York,6468,0,32
New York,6923,0,34
New York,6705,0,16
New York,6542,0,11
New York,6497,0,19
New York,6616,0,27
New York,6788,0,26
New York,5876,1,33
New York,5382,0,40
New York,5688,0,34
New York,6667,1,20
New York,5929,1,28
New York,6096,0,30
Для каждого города я хотел бы рассчитать медианные продажи для последовательных нулей, которые лежат до и после флага «1», для каждого города.
Нижекод, который я использую.
do.call(rbind,
by(x, list(x$City, cumsum(c(0,diff(x$flag)!=0))),
function(a) { a$Sales <- median(a$Sales) ; a[1,,drop=FALSE] ; }))
Я также хочу вычислить соответствующее значение Count для каждой идентифицированной медианы ($ Sales). Например, Счет - 27 для 6616 (Нью-Йорк, FLag = 0).
![enter image description here](https://i.stack.imgur.com/mhWzH.jpg)
Не уверен, как настроить код, для достижения желаемого результата.
Более того, поскольку я использую Медиану, он будет отлично фиксировать соответствующее значение, когда число наблюдений нечетно, однако для четного числа наблюдений потребуется среднее значение для центральных двух.термины.Не уверен, как сделать то же самое в существующем коде.