R语言 如何对数据框架进行排序

R语言 如何对数据框架进行排序

在这篇文章中,我们将讨论如何在R编程语言中对数据框进行排序。

数据框架进行排序的方法

  1. order()函数(增加和减少的顺序)
  2. dplyr包中的arrange()函数
  3. 来自data.table包的setorder()函数

方法1:使用order()函数

该函数用于根据数据框架中的特定列对数据框架进行排序

语法: order(dataframe$column_name,decreasing = TRUE))

其中

  • dataframe是输入的数据框架
  • 列名是数据框架中的列,数据框架根据该列进行排序
  • 递减参数指定了排序顺序的类型

如果它是TRUE,数据框架将按降序排序。否则,按照递增的顺序

返回类型: 元素的索引位置

例1 :R程序创建有2列的数据框架,并根据特定的列以递减顺序排序。显示基于科目的降序排序的数据框架,显示基于rollno的降序排序的数据框架

# create dataframe with roll no and 
# subjects columns
data = data.frame(
  rollno = c(1, 5, 4, 2, 3),
  subjects = c("java", "python", "php", "sql", "c"))
  
print(data)
  
print("sort the data in decreasing order based on subjects ")
print(data[order(datasubjects, decreasing = TRUE), ]   )
  
  
print("sort the data in decreasing order based on rollno ")
print(data[order(datarollno, decreasing = TRUE), ]   )

输出

  rollno subjects
1      1     java
2      5   python
3      4      php
4      2      sql
5      3        c
[1] "sort the data in decreasing order based on subjects "
  rollno subjects
4      2      sql
2      5   python
3      4      php
1      1     java
5      3        c
[1] "sort the data in decreasing order based on rollno "
  rollno subjects
2      5   python
3      4      php
5      3        c
4      2      sql
1      1     java

例子2: R程序创建有3列的数据框架,分别是rollno、姓名和带向量的科目,根据科目按递增顺序显示排序的数据框架,根据rollno按递增顺序显示排序的数据框架,根据姓名按递增顺序显示排序的数据框架。

# create dataframe with roll no, names
# and subjects columns
data=data.frame(rollno = c(1, 5, 4, 2, 3),
                names = c("sravan", "bobby",
                          "pinkey", "rohith", 
                          "gnanesh"),
                subjects = c("java", "python",
                             "php", "sql", "c"))
  
print(data)
  
print("sort the data in increasing order based on subjects") 
print(data[order(datasubjects, decreasing = FALSE), ]   )
  
  
print("sort the data in increasing order based on rollno")
print(data[order(datarollno, decreasing = FALSE), ]   )
  
print("sort the data in increasing order based on names")
print(data[order(data$names,decreasing = FALSE), ]   )

输出

  rollno   names subjects
1      1  sravan     java
2      5   bobby   python
3      4  pinkey      php
4      2  rohith      sql
5      3 gnanesh        c
[1] "sort the data in increasing order based on subjects"
  rollno   names subjects
5      3 gnanesh        c
1      1  sravan     java
3      4  pinkey      php
2      5   bobby   python
4      2  rohith      sql
[1] "sort the data in increasing order based on rollno"
  rollno   names subjects
1      1  sravan     java
4      2  rohith      sql
5      3 gnanesh        c
3      4  pinkey      php
2      5   bobby   python
[1] "sort the data in increasing order based on names"
  rollno   names subjects
2      5   bobby   python
5      3 gnanesh        c
3      4  pinkey      php
4      2  rohith      sql
1      1  sravan     java

方法2:使用dplyr的arrange()函数。

Arrange() 用于以递增的顺序对数据框架进行排序,它也会根据数据框架中的列对数据框架进行排序

语法: arrange(dataframe,column)

其中

  • dataframe是输入的数据框架
  • column是列名,根据此列对数据框架进行排序

我们需要安装dplyr包,因为它在该包中是可用的

语法: install.packages(“dplyr”)

示例: 基于列的数据框架排序的R程序

在这个程序中,我们使用矢量创建了三列,并根据主题列对数据框架进行排序

代码

# load the package
library("dplyr")  
  
# create dataframe with roll no, names 
# and subjects columns
data = data.frame(rollno = c(1, 5, 4, 2, 3),
                  names = c("sravan", "bobby", "pinkey",
                            "rohith", "gnanesh"),
                  subjects = c("java", "python", "php",
                               "sql", "c"))
  
# sort the data  based on subjects
print(arrange(data, subjects))

输出

  rollno   names subjects
1      3 gnanesh        c
2      1  sravan     java
3      4  pinkey      php
4      5   bobby   python
5      2  rohith      sql

方法3:使用data.table包中的setorder()

setorder 用于以设定的顺序格式对一个数据框架进行排序。

语法 :setorder(dataframe, column)

  • 其中dataframe是输入的数据框架
  • column是列的名称

例子: 基于列的数据框架排序的R程序

在这个程序中,我们使用矢量创建了有三列的数据框架,并使用setorder函数根据主题列对数据框架进行排序

代码

# load the library
library("data.table")
  
# create dataframe with roll no, names 
# and subjects columns
data=data.frame(rollno = c(1, 5, 4, 2, 3),
                names = c("sravan", "bobby", 
                          "pinkey", "rohith",
                          "gnanesh"),
                subjects = c("java", "python",
                             "php", "sql", "c"))
  
# sort the data  based on subjects
print(setorder(data,subjects))

输出

  rollno   names subjects
5      3 gnanesh        c
1      1  sravan     java
3      4  pinkey      php
2      5   bobby   python
4      2  rohith      sql

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程