Предположим, у меня достаточно большой фрейм данных, содержащий около миллиона строк
И я хочу удалить строки между BSM и ENDBSM в фрейме данных, как я могу сделать это эффективно?
Я думал, чтосначала пометьте строки 1, которые мне нужно извлечь, используя следующий цикл, но это займет вечность.
chkSTR = 0
for(i in 1:nrow(rDATA)){
if(rDATA$Data[i] == "BSM"){
chkSTR = 1
}
if(rDATA$Data[i] == "ENDBSM"){
chkSTR = 0
}
rDATA$BOOL[i] = chkSTR
}
Пример кадра входных данных
rData = data.frame(
Data =
c(1,"BSM","a",3,3,"ENDBSM",1,3,1,"BSM","b",3,3,"ENDBSM",1,2,1,"BSM","c",2,3,"ENDBSM",1,2)
)
Output example
rData = data.frame(
Data =
c("BSM","a",3,3,"ENDBSM","BSM","b",3,3,"ENDBSM","BSM","c",2,3,"ENDBSM")
)