У меня есть датафрейм, похожий на этот:
set.seed(1004)
x <- c(sort(rnorm(40)),sort(rnorm(20)),
sort(rnorm(40)),sort(rnorm(20)))
x[30:40] <- -x[30:40]+1
x[90:100] <- -x[90:100]+1
y <- c(rep('a',times = 60),rep('b',times = 60))
z <- 1:length(x)
df <- data.frame(z, x, y)
Я хотел бы создать новый столбец в соответствии с x
и y
. Я хочу, чтобы в каждой подгруппе y
(то есть 'a' и 'b' в примере), первый случай, когда x > 0
, следующие строки для этого дополнительного столбца должны иметь одинаковое значение (коэффициент). И это, хотя x < 0
снова после этого первого происшествия.
В конце я хочу что-то вроде:
df$y2 <- c(rep('0', times = 20), rep('1', times = 40), rep('0', times = 19), rep('1', times = 41))
Пока я пробовал это:
library(magrittr)
df %<>%
mutate(y2 = case_when(
x < 0 ~ '0',
x >= 0 ~ '1'
))
Но мне не хватает аргумента, так что y2
остается на «1», хотя x
снова становится отрицательным.
Графическое представление того, что я хочу: пока у меня есть это:
Пока я хочу это: