我有一个数据集,显示了一场篮球比赛中的换人情况.第一行的数据有一个变量‘阵容之前’,它告诉我们所有5名球员在换人之前在球场上.
df <- tibble(sub_num = c(1,2,3),
player_out = c('player_5', 'player_4', 'player_3'),
player_in = c('player_5', 'player_7', 'player_8'),
lineupBefore = c('player_1, player_2, player_3, player_4, player_5',NA,NA)
)
我想要完成的是用一个新的变量‘lineupAfter’填充数据帧,该变量用一个新变量‘lineupAfter’来替换PERAYER_IN的PLAYER_OUT,然后下一行将lineupAfter
拉入到NA中的lineupBefore
,然后对该行数据执行STR_REPLACE.
希望输出结果如下所示.
df_after <- tibble(sub_num = c(1,2,3),
player_out = c('player_5', 'player_4', 'player_3'),
player_in = c('player_6', 'player_7', 'player_8'),
lineupBefore = c('player_1, player_2, player_3, player_4, player_5','player_1, player_2, player_3, player_4, player_6','player_1, player_2, player_3, player_7, player_6'),
lineupAfter = c('player_1, player_2, player_3, player_4, player_6', 'player_1, player_2, player_3, player_7, player_6', 'player_1, player_2, player_8, player_7, player_6')
)
我试过了,但我知道它不会起作用,因为我相信变异一次只对一个专栏起作用,不会来回移动.
df_after <- df %>%
mutate(lineupAfter = str_replace(lineupBefore, player_out, player_in),
lineupBefore = if_else(row_number() != 1, lag(lineupAfter), lineupBefore))
任何指导都将不胜感激!