【发布时间】:2020-11-27 18:24:05
【问题描述】:
我正在尝试为一组 ID 应用一个规则,在第一个实例中,一个变量的值等于 1,该组中所有后续行中另一个变量的所有值都等于 1。
基本上,这就是我想要做的:
我有:
ID D
1 1
1 0
1 0
2 0
2 0
3 1
3 0
3 0
4 1
4 0
4 1
4 1
4 1
4 0
我想要:
ID D PREV
1 1 0
1 0 1
1 0 1
2 0 0
2 0 0
3 1 0
3 0 1
3 0 1
4 1 0
4 0 1
4 1 1
4 1 1
4 0 1
我正在尝试使用 dplyr 遍历一系列分组的行,在每个行中应用一个 ifelse 函数。我的代码如下所示:
data$prev = 0
data <-
data %>%
group_by(id)%>%
mutate(prev = if_else(lag(prev) == 1 | lag(d) == 1, 1, 0))
但由于某种原因,这并没有将 ifelse 函数应用于整个组,导致数据看起来像这样:
ID D PREV
1 1 0
1 0 1
1 0 0
2 0 0
2 0 0
3 1 0
3 0 1
3 0 0
4 1 0
4 0 1
4 1 0
4 1 1
4 0 1
谁能帮我解决这个问题?
【问题讨论】: