У меня есть кадр данных, который выглядит следующим образом:Удалить строку кадра данных в R с матчем в течение нескольких строк
content ChatPosition
This is a start line START
This is a middle line MIDDLE
This is a middle line MIDDLE
This is the last line END
This is a start line with a subsequent middle or end START
This is another start line without a middle or an end START
This is a start line START
This is a middle line MIDDLE
This is the last line END
content <- c("This is a start line" , "This is a middle line" , "This is a middle line" ,"This is the last line" ,
"This is a start line with a subsequent middle or end" , "This is another start line without a middle or an end" ,
"This is a start line" , "This is a middle line" , "This is the last line")
ChatPosition <- c("START" , "MIDDLE" , "MIDDLE" , "END" , "START" ,"START" , "START" ,"MIDDLE" , "END")
df <- data.frame(content, ChatPosition)
Я хотел бы, чтобы удалить строки, которые содержат начало, но только если в следующей строке не содержит MIDDLE или END в столбце ChatPosition.
content ChatPosition
This is a start line START
This is a middle line MIDDLE
This is a middle line MIDDLE
This is the last line END
This is a start line START
This is a middle line MIDDLE
This is the last line END
nrow(df)
jjj <- 0
for(jjj in 1:nrow(df))
{
# Check of a match of two STARTS over over multiple lines.
if (df$ChatPosition[jjj]=="START" && df$ChatPosition[jjj+1]=="START")
{
print(df$content[jjj])
}
}
Я был в состоянии использовать приведенный выше код для распечатки двух линий я хочу удалить Мне интересно, что это самое элегантное решение, чтобы удалить эти строки?
Кроме того, это для вложенных, если правильный подход здесь или есть библиотека, которая может сделать этот тип вещи гораздо легче?
С уважением Джонатан
Благодаря Имо действительно хороший и элегантный (Очень R). Я пробовал это, и он дает необходимый результат. Большое спасибо. –