如果前一个值在相同的id内为1,我试图使访问值的其余部分为1,但没有一堆缓慢的for
循环就找不到好方法。
示例如下:
data.frame(ID = c(1,1,1,1,1,2,2,2,2,2,2,3,3,3),
Visit = c(1,2,3,4,5,1,2,3,4,5,6,1,2,3),
Value = c(0,0,1,0,0,0,0,0,0,1,0,0,1,0))
下面是我想要得到的:
data.frame(ID = c(1,1,1,1,1,2,2,2,2,2,2,3,3,3),
Visit = c(1,2,3,4,5,1,2,3,4,5,6,1,2,3),
Value = c(0,0,1,1,1,0,0,0,0,1,1,0,1,1))
提前感谢!
我们可以使用cummax
返回1对于按'ID'分组后的其余值
library(dplyr)
df1 %>%
group_by(ID) %>%
mutate(Value = cummax(Value))%>%
ungroup
与产出
# A tibble: 13 × 3
ID Visit Value
<dbl> <dbl> <int>
1 1 1 0
2 1 2 0
3 1 3 1
4 1 4 1
5 2 1 0
6 2 2 0
7 2 3 0
8 2 4 0
9 2 5 1
10 2 6 1
11 3 1 0
12 3 2 1
13 3 3 1