Итак, у меня есть фрейм данных, который я пытаюсь очистить, чтобы отметить, какие символы имеют какие строки в песне:
artist track_title lyric character
1 Claude-Michel Schönberg Prologue ["Work Song"] ["Work Song"]
2 Claude-Michel Schönberg Prologue [PRISONERS] [PRISONERS]
3 Claude-Michel Schönberg Prologue Aaah, aah, aaaahhhh false
4 Claude-Michel Schönberg Prologue Look down, look down false
5 Claude-Michel Schönberg Prologue Don't look 'em in the eye false
6 Claude-Michel Schönberg Prologue Look down, look down false
7 Claude-Michel Schönberg Prologue You're here until you die false
8 Claude-Michel Schönberg Prologue [PRISONER #1] [PRISONER #1]
Что я хочу сделать, так или иначе проверить, является ли значение для character
имеет значение false, и если это так, постоянно ищите, пока я не получу 1-й экземпляр, или чтобы проверить, превышает ли текущее значение character
значение false
, и если да, то принять предыдущее значение character
.
Я пытался использовать lead()
и lag()
, как показано ниже:
lyrics[c(1:3,8:15),] %>%
mutate(character = if_else(str_detect(lyric, "\\[|\\]") == TRUE,lyric,'false'),
character2 = if_else(character == 'false',lag(character),character)) %>%
as.data.frame()
но я получаю только что-то похожее на это:
artist track_title lyric character
1 Claude-Michel Schönberg Prologue ["Work Song"] ["Work Song"]
2 Claude-Michel Schönberg Prologue [PRISONERS] [PRISONERS]
3 Claude-Michel Schönberg Prologue Aaah, aah, aaaahhhh [PRISONERS]
4 Claude-Michel Schönberg Prologue Don't look 'em in the eye false
5 Claude-Michel Schönberg Prologue Look down, look down false
6 Claude-Michel Schönberg Prologue You're here until you die false
7 Claude-Michel Schönberg Prologue [PRISONER #1] [PRISONER #1]
Он делает это только один раз, и я пытаюсь сделать этот каскад вниз по колонне.