В R
я пытаюсь создать столбец локального минимума / максимума на основе 2 других столбцов.
В частности, я хочу, чтобы 3-й столбец был «текущим» столбцом,и когда x1 > current
или x2 < current
я хочу обновить currentValue.В противном случае это должен быть предыдущий currentValue
. Первоначально я установил для всего столбца y1 начальное значение.Как видно, строка 5 должна использовать currentValue
из 5, и никаких изменений не должно быть.Однако вместо этого проводится сравнение со значением 2.
Любая помощь будет принята с благодарностью, поскольку я не знаком с применением пользовательских функций прокрутки в R
.Кажется, что для этого должно быть элегантное решение, но несколько других подобных постов требуют много кода для этого.
> c1 <- c(1,1,2,5,4,3,2,1)
> c2 <- c(2,3,3,6,6,4,4,2)
> c3 <- 2
> tempData <- data.frame(c1,c2,c3)
> names(tempData) <- c("x1", "x2", "currentValue")
> tempData
x1 x2 currentValue
1 1 2 2
2 1 3 2
3 2 3 2
4 5 6 2
5 4 6 2
6 3 4 2
7 2 4 2
8 1 2 2
>
> tempData$currentValue <- ifelse (tempData$x1 > lag(tempData$currentValue), tempData$x1, ifelse(tempData$x2 < lag(tempData$currentValue), tempData$x2, lag(tempData$currentValue)))
> tempData
x1 x2 currentValue
1 1 2 NA
2 1 3 2
3 2 3 2
4 5 6 5
5 4 6 4
6 3 4 3
7 2 4 2
8 1 2 2