根据其他行(R)填充列



我正在寻找一种方法来填写基于在不同列的值在R列。下面是我的数据。

<表类> 年 操作 球员最终tbody><<tr>20011迈克200320020迈克NA20030迈克NA20040迈克NA20010AlanNA20020AlanNA20031Alan200420040AlanNA

这里不需要显式循环。

首先将数据帧按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

最新更新