【发布时间】:2026-01-24 09:20:03
【问题描述】:
我有一个类似这样的数据框:
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'
))
但我错过了一个论点,即使x 再次变为负数,y2 仍保持在“1”。
我想要的图形表示是:到目前为止我有这个:
虽然我想要这个:
【问题讨论】:
标签: r dataframe find-occurrences