Введение в сортировку в R

Сортировка является одним из важнейших аспектов анализа данных. Это техника, в которой данные располагаются или сортируются в определенном порядке. Данные сортируются для извлечения необходимой информации из набора данных. Например, упорядочивая данные в порядке возрастания на основе ключа даты, здесь были определены критерии для сортировки. Эта операция может быть легко выполнена с использованием языка R. В языке R есть несколько функций сортировки, таких как пузырьковая сортировка и выборочная сортировка. В этой статье мы увидим важность различных функций сортировки и объясним каждую из них на примерах.

Сортировка выполняется в R

Существует несколько способов сортировки данных в R. Аналитик данных должен рассмотреть наиболее подходящий метод, основанный на структуре данных. Язык R имеет несколько функций и способов сортировки данных, таких как sort (), order () и dplyrI () package.

Что нужно иметь в виду, прежде чем сортировать данные.

  1. Порядок, в котором данные должны быть отсортированы по возрастанию или по убыванию.
  2. Критерии сортировки по нескольким столбцам.
  3. Учет отсутствующих и дублирующих значений при сортировке. Аналитик должен решить, что делать с отсутствующими и повторяющимися значениями. Перед удалением или заменой нулевых значений следует учитывать общее влияние на данные.

Функция сортировки () в R

Функция сортировки в R используется для сортировки вектора. По умолчанию значение организовано в порядке возрастания. Давайте возьмем пример столбца оценки всех учащихся в классе.

Синтаксис для сортировки вектора

“sort (x, decreasing = FALSE)”

Здесь x относится к вектору, а уменьшение должно быть заменено на TRUE, когда сортировка должна выполняться в порядке убывания. Функция сортировки используется при расположении числового или символьного вектора в нужном порядке. Основным ограничением функции сортировки является то, что ее нельзя использовать для сортировки фрейма данных. Чтобы преодолеть это ограничение, используется функция Order ().

Базовый пример сортировки с использованием функции sort ()

set.seed(1)
x <- sample(1:100, 10)
x

Выход
(1) 68 39 1 34 87 43 14 82 59 51

сортировать (х)

Выход

(1) 1 14 34 39 43 51 59 68 82 87

Сортировка фреймов данных может быть выполнена с помощью функции order (). Переменные могут быть легко отсортированы в порядке возрастания или убывания, однако функция order по умолчанию сортирует переменную по возрастанию.

> df <- data.frame("Serial_number" = 1:5, "Age" = c(20, 21, 17, 18, 19), "Name" = c("Johnny", "Dorian", "Linda", "Cathy", "Rick"))
>
> # Sort by age ascending order
> newdataAsc newdataAsc

# sorting is descending order
> newdataDsc> newdataDsc newdataAsc

Обратите внимание, что перед столбцом Age (-df $ Age) используется отрицательный знак, чтобы отсортировать возраст по убыванию. Альтернативно, в этой позиции можно использовать нисходящий аргумент. Функция Order используется для ссылки на индекс столбца, а не на имя столбца. Например, вместо возраста указатель индекса для фрейма данных будет «1». Помня о значениях индекса, начинаются с «0».

В некоторых случаях нам может понадобиться отсортировать данные по нескольким критериям, этого можно достичь в R с помощью использования имен переменных или номеров индексов. В приведенном ниже примере я использовал набор данных mtcars, который доступен в R studio.

df <- mtcars
> df
> # sort the dataframe by key disp
> df(with(df, order(mpg, disp)), )

> # Sort by column index values
> df(order( df(, 1), df(, 3) ), )

В R альтернативный способ сортировки данных - использование пакета dplyr. Этот пакет очень прост в использовании и надежен с доступными точными инструкциями.

> install.packages("dplyr")
> library(dplyr)
> df <- mtcars
>
> # sort the dataframe by key disp
> arrange(mydata, disp)

Типы сортировки в R

R оснащен множеством алгоритмов для выполнения сортировки данных. Ниже приведены различные типы функций сортировки. Чтобы проиллюстрировать различные типы сортировки, используется выборка из 10 случайных чисел из массива.

1. Пузырьковая сортировка

В этом алгоритме два значения сравниваются бок о бок, и элементы меняются местами, когда критерии удовлетворяются. Это может быть либо в порядке возрастания, либо в порядке убывания. В пузырьковой сортировке формируются пары для элементов, доступных в переменной, и элементы сравниваются друг с другом, когда один элемент больше другого, они меняются местами. Процесс повторяется до последнего элемента.

> bubble_sort <- function (x, ascending = TRUE) (
+ n <- length(x)
+ if (ascending) (
+ for(i in 1:(n-1))(
+ for(j in 1:(ni)) (
+ if(x(j+1) < x(j)) (
+ tmp <- x (j) + x(j) <- x( j+ 1) + x(j+1) <- tmp
+ )
+ )
+ )
+ )
+ else (
+ for(i in 1:(n-1))(
+ for(j in 1:(ni)) (
+ if(x(j+1) > x(j)) (
+ tmp <- x (j) + x(j) <- x( j+ 1) + x(j+1) <- tmp
+ )
+ )
+ )
+ )
+ x
+ )
>
> x <-sample(1:100, 10)
> example <- bubble_sort(x)
> example

Выход

2. Вставка сортировки

В алгоритме сортировки вставкой отсортированные и несортированные элементы сравниваются, а несортированный элемент помещается в подходящее место после каждой итерации.

В этом алгоритме первый элемент предполагается отсортированным, а второй элемент сохраняется отдельно как ключевой элемент. Отсортированный элемент затем сравнивается с ключом. Если отсортированный элемент больше, чем ключевой элемент, места меняются местами, и ключевой элемент является первым элементом.

> insertion_sort <- function(A)(
+ for (j in 2:length(A)) (
+ key = A(j) + i = j - 1
+ while (i > 0 && A(i) > key) (
+ A((i + 1)) = A(i) + i = i - 1
+ )
+ A((i + 1)) = key
+ )
+ A
+ )
>
>
> # testing the insertion function
> x <-sample(1:100, 10)
> example <- insertion_sort(x)
> example

Выход

3. Выбор сортировки

Функция сортировки выбора является широко используемым алгоритмом сортировки, используемым в языке R. В этом типе сортировки наименьший элемент из несортированного списка помещается в начало списка. В алгоритме сортировки выбора наименьший элемент из массива несортированного списка выбирается и помещается в начало несортированного списка на каждой итерации. Например, в ряду чисел, расположенных в случайной последовательности, стартовый элемент или номер выбирается как минимум. На следующем шаге выбранный минимальный номер сравнивается со следующим элементом или номером. Если сравниваемый элемент меньше выбранного нами минимума, второй элемент становится минимумом. Этот процесс повторяется до последнего элемента.

> selection_sort <- function (x, ascending = TRUE) (
+ max <- length(x)
+ if (ascending) (
+ for (j in 1:(max-1))(
+ m <- x(j) + p <- j
+ for(k in (j+1):max) (
+ if(x(k) < m) (
+ m <- x(k) + p <- k
+ ) ## end if
+ ) ## end for k
+ x(p) <- x(j) + x(j) <- m
+ ) ## end for j
+ ) ## end ascending if
+ else (
+ for (j in 1:(max-1))(
+ m <- x(j) + p <- j
+ for(k in (j+1):max) (
+ if(x(k) > m) (
+ m <- x(k) + p <- k
+ ) ## end if
+ ) ## end for k
+ x(p) <- x(j) + x(j) <- m
+ ) ## end for j
+ ) ## end ascending else
+ x
+ )
>
>
> # testing the selectionsort function
> x <-sample(1:100, 10)
>
> example <- selection_sort(x)
> example

Выход

4. Быстрая сортировка

Алгоритм быстрой сортировки работает как разделяй и властвуй. Случайный элемент выбирается как массив в массиве, а затем все остальные элементы, кроме центра, делятся на два раздела. На следующем шаге все элементы, которые меньше и больше, чем стержень, делятся на два разных раздела. Наконец, элементы сортируются с помощью рекурсии.

> # Quick sort algorithm:
> quickSort <- function(arr) (
+ # Pick a number at random.
+ mid <- sample(arr, 1)
+
+ # Place-holders for left and right values.
+ left <- c()
+ right <- c()
+
+ # Move all the smaller values to the left, bigger values to the right.
+ lapply(arr(arr != mid), function(d) (
+ if (d < mid) (
+ left <<- c(left, d)
+ )
+ else (
+ right <<- c(right, d)
+ )
+ ))
+
+ if (length(left) > 1) (
+ left <- quickSort(left)
+ )
+
+ if (length(right) > 1) (
+ right <- quickSort(right)
+ )
+
+ # Finally, return the sorted values.
+ c(left, mid, right)
+ )
>
> x <-sample(1:100, 10)
>
> RES <- quickSort(x)
> RES

Выход

5. Объединить сортировку

Сортировка слиянием очень похожа на быструю сортировку, однако здесь массив разделен на две равные половины. Алгоритм сортировки слиянием был разделен на две части - функцию слияния и сортировки. При сортировке слиянием список разбивается на несколько подсписков, пока каждый подсписок не состоит из отдельного элемента. Слияние результатов этих подсписков является отсортированным списком.

> mmerge<-function(a, b) (
+ r<-numeric(length(a)+length(b))
+ ai<-1; bi<-1; j<-1;
+ for(j in 1:length(r)) (
+ if((ai<=length(a) && a(ai)length(b)) (
+ r(j) <- a(ai) + ai <- ai+1
+ ) else (
+ r(j) <- b(bi) + bi <- bi+1
+ )
+ )
+ r
+ )
> mmergesort<-function(A) (
+ if(length(A)>1) (
+ q <- ceiling(length(A)/2)
+ a <- mmergesort(A(1:q))
+ b <- mmergesort(A((q+1):length(A)))
+ mmerge(a, b)
+ ) else (
+ A
+ )
+ )
>
> x <-sample(1:100, 10)
>
> RES <- mmergesort(x)
> RES

Выход

6. HeapSort

Техника сортировки кучи очень похожа на технику сортировки выбора, где наименьший элемент из несортированного списка выбирается в каждой итерации и помещается в начале списка. Тем не менее, техника heapsort использует концепции дерева.

> heap.structure<-function(vect)
+ (
+ le=length(vect)
+ heap=vec
+ for (k in le:1)
+ (
+ heap=modify_heap(heap, k)
+ )
+ return(heap)
+ )
>
>
> modify_heap<-function(heap, rooti)
+ (
+ le=length(heap)
+ flag=0
+
+ while (rooti*2 <= le && flag==1)
+ (
+ left.i=rooti*2
+ right.i=rooti*2+2
+ flag=1
+ child=c(heap(left.i), heap(right.i))
+ child=child(!is.na(child)) + min.ind=which.min(child)
+ if (heap(rooti)>child(min.ind))
+ (
+ flag=1
+ heap.ind=c(left.i, right.i)(min.ind) +
+ tmp1=heap(heap.ind) + heap(heap.ind)=heap(rooti) + heap(rooti)=tmp1
+
+ rooti=heap.ind
+ )
+ )
+ return(heap)
+ )
>
> heap_sort<-function(heap)
+ (
+ sorted.heap=NULL
+ le=length(heap)
+ while(le>0)
+ (
+ sorted.heap=c(sorted.heap, heap(1))
+ le=length(heap)
+ heap(1)=heap(le) + heap=heap(1:(le-1)) + heap=modify_heap(heap, rooti=1)
+ le=le-1
+ )
+ return(sorted.heap)
+ )
>
>
> x <- sample(1:100, 10)
> heap=heap.building(x)
> heap_sort=heap_sort(heap)
> heap_sort

Выход

Вывод

В этой статье мы рассмотрели различные способы сортировки данных с использованием R. Мы увидели, как команда сортировки и упорядочения используется для сортировки фрейма данных, в статье были показаны дополнительные ограничения функции сортировки над функцией упорядочения. Подробное объяснение различных алгоритмов сортировки, таких как пузырьковая сортировка, выборочная сортировка и сортировка слиянием, было подробно обсуждено. Сортировка, являющаяся одним из важнейших этапов анализа данных, имеет разные функции для множества потребностей. Это полностью зависит от инженера данных, чтобы выбрать наиболее подходящий метод для сортировки на основе доступных данных.

Рекомендуемые статьи

Это было руководство по сортировке в R. Здесь мы обсуждаем, что такое сортировка в R, особенности и типы сортировки в R. Вы также можете просмотреть другие предлагаемые статьи, чтобы узнать больше -

  1. Языки науки о данных
  2. База данных в SQL
  3. Типы данных в C
  4. Типы данных PostgreSQL
  5. Введение в сортировку в таблице
  6. Вставка Сортировка в JavaScript
  7. Полное руководство по сортировке в C # с примерами
  8. Функция сортировки в Python с примерами