У меня есть два вектора временных рядов: complete_data
и incomplete_data
. данные в векторе состоят из 6 возможных событий, которые происходят случайным образом по всему вектору. В принципе, они должны быть одинаковыми, потому что с каждым событием в complete_data
это же событие добавлялось к incomplete_data
. однако в действительности в системе были некоторые аномалии, и не все события в complete_data
были отправлены в incomplete_data
. Таким образом, complete_data
длиннее incomplete_data
. Мне нужно найти различия в схеме между ними и отметить их. Я предпринял попытку, но она предполагает, что расхождение между двумя векторами происходит в одном фрагменте, тогда как в действительности существуют различные «пропущенные события», разбросанные в incomplete_data
.
Вот моя попытка:
complete_data <- c('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
dfcomplete <- as.data.frame(complete_data)
incomplete_data <- c('a', 'b', 'c', 'a','c', 'a', 'b', 'a', 'b', 'c')
dfincomplete <- as.data.frame(incomplete_data)
findMatch <- function(complete_data, incomplete_data){
matching_inorder <- NULL
matching_reverseorder <- NULL
for (i in 1:length(complete_data)){
matching_inorder[i] <- complete_data[i] == incomplete_data[i]
matching_reverseorder[i] <- rev(complete_data)[i] == rev(incomplete_data)[i]
}
is_match <- ifelse(matching_inorder == FALSE &
rev(matching_reverseorder) == FALSE, 'non_match', 'match')
is_match
}
dfcomplete$is_match_incorrect <- findMatch(dfcomplete$complete_data,
dfincomplete$incomplete_data)
А вот что я хотел бы получить:
dfcomplete$expected_output <- c('match', 'match', 'match', 'match', 'non-match', 'match',
'match', 'match', 'non_match', 'match', 'match', 'match')
В действительности мои данные намного больше, чем в этих примерах, с множеством различных расхождений, разбросанных по всему вектору. Хотя не обязательно слишком много расхождений, чтобы сделать задачу бессмысленной, например, в одном случае вектор complete
имеет 320 точек данных, тогда как вектор incomplete
имеет 309.
Любая помощь, которая может быть предложена, будет принята с благодарностью.