如果前一个值在r中为1,是否有一种好方法可以使id中的其余值为1 ?



如果前一个值在相同的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

相关内容

  • 没有找到相关文章

最新更新