Я написал функцию, которая проверяет, какие значения в векторе не упорядочены в порядке возрастания.Поэтому каждый элемент в векторе проверяется, если он выше, чем все элементы слева от него.
Затем я использовал эту функцию для сгруппированных данных, но это занимает очень много времени (около 6-7 минут).Мои исходные данные содержат около 3 миллионов строк и 13 480 групп.
Мой код:
check_which_not_ordered <- function(x) {
res <- rep(NA, length(x))
for(i in 1:length(x)) {
for (j in 1:i) {
res[i] <- all(x[i] >= x[1:j])
}
}
return(res)
}
setDT(dt)[, ordered := check_which_not_ordered(no_of_reviews),
by = .(country, id)]
Небольшая выборка данных:
dtt <- data.frame(country = c(rep("USA", 10), rep("Canada", 10)),
id = c(rep(1, 5), rep(2, 5), rep(3, 5), rep(4, 5)),
no_of_reviews = c(c(10, 12, 3, 4, 13),
c(2, 3, 4, 5, 6),
c(7, 9, NA, 7, NA),
c(NA, 7, 2, 9, 10)))
Выход проверяет, какие элементы не отсортированы в порядке возрастания, как ЛОЖНО.Интересно, смогу ли я достичь того же результата быстрее?