我正在寻找一种方法来填写基于在不同列的值在R列。下面是我的数据。
<表类>
年
操作
球员最终 tbody><<tr>2001 1 迈克 2003 2002 0 迈克 NA 2003 0 迈克 NA 2004 0 迈克 NA 2001 0 Alan NA 2002 0 Alan NA 2003 1 Alan 2004 2004 0 Alan NA 表类>
这里不需要显式循环。
首先将数据帧按player
分组。然后找出action
的累积和(cumsum
)大于0且year
小于或等于该组end
年的行。如果该行满足以上条件,则设置action
为1,否则为0。
使用dplyr包,您可以在几行中实现这一点:
library(dplyr)
df %>%
group_by(player) %>%
mutate(action = as.numeric(cumsum(action) > 0 & year <= na.omit(end)[1]))
#> # A tibble: 8 x 4
#> # Groups: player [2]
#> year action player end
#> <int> <dbl> <chr> <int>
#> 1 2001 1 Mike 2003
#> 2 2002 1 Mike NA
#> 3 2003 1 Mike NA
#> 4 2004 0 Mike NA
#> 5 2001 0 Alan NA
#> 6 2002 0 Alan NA
#> 7 2003 1 Alan 2004
#> 8 2004 1 Alan NA