Использование cut
для преобразования непрерывной переменной в коэффициент с dplyr
происходит очень медленно. С моими реальными данными (которые содержат 400 000 строк и 96 переменных) это занимает 58 секунд.Ускорить медленный код dplyr
My data.frame
выглядит примерно так:
library(ggplot2)
diamonds <- rbind(diamonds, diamonds, diamonds, diamonds, diamonds, diamonds, diamonds, diamonds)
И мой медленный код очень похож на это:
library(dplyr)
mutate(diamonds, price.bands = cut(price, c(326, 1000, 10000, 19000), labels = c("low", "mid", "high"), include.lowest=T))
Есть код, который я могу использовать, что бы быстрее?
Я не вижу много 'dplyr' кода здесь, и ваша битва шея просто' cut'. Вы можете использовать * присваивание оператором reference * из 'data.table' (': = ') вместо' mutate' или вы можете попробовать 'findInterval' вместо' cut', но вы потеряете свои метки. –
Может быть, ваши данные сгруппированы? Это может увеличить время вычисления. Я не вижу, как 'cut' будет _that_ медленным в противном случае. Например, чтобы разрезать вектор из 1 миллиона элементов на три категории, занимает четверть секунды на моем ноутбуке. Что делать, если вы делаете «бриллианты%>% ungroup()%>% mutate (price.bands = cut (цена, c (326, 1000, 10000, 19000), метки = c (« низкий »,« средний »,« высокий "), include.lowest = T))'? –