R语言 如何对数据框架进行排序
在这篇文章中,我们将讨论如何在R编程语言中对数据框进行排序。
对 数据框架进行排序的方法
- order()函数(增加和减少的顺序)
- dplyr包中的arrange()函数
- 来自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