Если вас интересует только абсолютная разница часов и формат отметки времени согласован, вы можете сделать
absDif <- abs(as.numeric(substr(test_time[2], 1, 2)) - as.numeric(substr(test_time[1], 1, 2)))
Если вам также нужны минуты, возможно, удобнее создать числовой столбец времениво-первых, например, как внутри цикла
numericTimestamps[i] <- as.numeric(substr(test_time[i], 1, 2) +
as.numeric(substr(test_time[i], 4, 5) / 60 +
as.numeric(substr(test_time[i], 7, 8) / 60 / 60
РЕДАКТИРОВАТЬ для учета измененного вопроса:
Если я вас правильно понял, вы ищете не абсолютную разницу, а простую разницу в часахучитывая дневную смену.В этом случае может быть проще перейти к объектам dateTime, как предлагается ниже.Если вы хотите придерживаться числовых значений, вам нужно учитывать сдвиг даты самостоятельно, например, добавив условие if:
absDif <- as.numeric(substr(test_time[2], 1, 2)) - as.numeric(substr(test_time[1], 1, 2))
# if the first is smaller than the second, there was most probably a shift in date
if(as.numeric(substr(test_time[2], 1, 2)) < as.numeric(substr(test_time[1], 1, 2))){
# correct by 24 hours
absDif <- as.numeric(substr(test_time[2], 1, 2)) - (as.numeric(substr(test_time[1], 1, 2)) + 24)
}