R语言 数组排序

R语言 数组排序

矢量是一个单维数组,它由一个单一的维度,即长度指定。一个向量可以通过 ‘c() ‘函数来创建。一个值的列表被传递给 c() 函数来创建一个向量。排序可以按升序或降序进行。在排序之前,有几件事需要注意。它们是:。

  • 需要进行排序的顺序 – 升序/降序。
  • 根据多列标准进行排序。
  • 在排序过程中处理缺失和重复的值。分析师必须决定如何处理缺失和重复的值。在删除或替换空值之前,应该考虑对数据的整体影响。

方法1:sort()函数

R语言中的 sort() 函数用于对一个向量进行排序, 默认情况下,它对一个向量按递增顺序排序。 要以降序排序,请在sort函数中添加一个 “降序 “参数。

语法

sort(name_of_vector, decreasing = TRUE)

参数

name_of_vector: 要排序的向量

decreasing: 布尔值,按降序排序。

例1 :

# create a linear array
arr <- c(9, 8, 7, 6, 5, 4, 3, 2, 1)
 
# use of sort function to sort array
# by default it is sorted in increasing order
sort(arr)

输出

[1] 1 2 3 4 5 6 7 8 9

例2 :

# create linear array
arr <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
 
# use in built sort function
# to sort in decreasing order
sort(arr, decreasing = TRUE)

输出

[1] 9 8 7 6 5 4 3 2 1

注意: sort()函数的主要缺点是它不能对数据帧进行排序。

方法2:order()函数

为了克服方法1中的缺点,我们使用 order() 函数,它也可以根据指定的列对数据帧进行排序。要按递减顺序排序,要加负号。数据也可以用多个标准进行排序。假设两个人的年龄相同,那么我们可以根据他们的名字进行排序,即按词法排序。请看下面的例子。

例1 :

# define dataframe
df <- data.frame("Age" = c(12, 21, 15, 5, 25),
                 "Name" = c("Johnny", "Glen", "Alfie",
                            "Jack", "Finch"))
 
# sort the dataframe on the basis of
# age column and store it in newdf
newdf <- df[order(df$Age), ]
 
# print sorted dataframe
print(newdf)

输出

   Age  Name
4  5    Jack
1  12   Johnny
3  15   Alfie
2  21   Glen
5  25   Finch

例2 :

# define vector
r = c(10, 20, 30, 40, 50, 60)
 
# sort in decreasing order
order(-r)

输出

[1] 6 5 4 3 2 1

例3 :

# define dataframe
df <- data.frame("Age" = c(12, 21, 15, 12, 25, 12),
                 "Name" = c("Johnny", "Glen", "Alfie",
                            "Jack", "Finch", "Aaron"))
 
# sort the dataframe first on the basis of
# Age and if age is same perform sort on Name
newdf <- df[order(dfAge, dfName), ]
 
# print sorted dataframe
print(newdf)

输出

  Age   Name
6  12   Aaron
4  12   Jack
1  12   Johnny
3  15   Alfie
2  21   Glen
5  25   Finch

注意: 上面的输出是数字的索引。例如,60是矢量中最大的一个,其索引为6。因此,6被显示在第一位。

方法3:使用循环对数组进行排序

  • 创建一个线性数组,例如arr
  • 创建一个变量swap。如果在遍历整个数组后,swap为false,这意味着数组已经被排序,并中断循环。
  • 否则,运行循环并将原数组复制到另一个数组,例如newArr,并开始比较原数组中的相邻元素
  • 如果当前元素比前一个元素小,那么就把Arr的当前元素复制到newArr的前一个位置,把Arr的前一个元素复制到newArr的当前位置。现在newArr的元素被交换了。
  • 将newArr复制到原数组arr,并使交换=TRUE。
  • 重复以上步骤,直到arr被排序完毕

下面是上述方法的实现。

# create linear array
arr <- c(9, 4, 5, 4, 5, 6, 3, 2, 1)
 
# repeat until break is encountered
repeat
{
      # create a variable swap
    swap = FALSE
   
      # run loop from 2nd element till last element
    for (i in 2:length(arr))
    {
          # copy original array into newArr
        newArr <- arr
        if (arr[i - 1] > arr[i])
        {
            newArr[i - 1] <- arr[i]
            newArr[i] <- arr[i - 1]
            arr <- newArr
            swapped <- TRUE
        }
    }
    if (!swapped) {break}
}
print(arr)

输出

[1] 1 2 3 4 4 5 5 6 9

方法4:使用dplyr包

dplyr包很容易使用,而且很可靠。该包包括 安排() 方法来对数据进行排序。请看下面的例子。

例子1 :

# install package dplyr
install.packages("dplyr")
 
# import library dplyr
library(dplyr)
 
# create dataframe
df <- data.frame("Age" = c(12, 21, 15, 5, 25),
                 "Name" = c("Johnny", "Glen", "Alfie",
                            "Jack", "Finch"))
 
# sort the dataframe on the basis of
# age column using arrange method
arrange(df,age)

输出

   Age  Name
4  5    Jack
1  12   Johnny
3  15   Alfie
2  21   Glen
5  25   Finch

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程