Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按两列对数据帧排序(带条件)_R_Sorting_Dataframe_Conditional Statements - Fatal编程技术网

R 按两列对数据帧排序(带条件)

R 按两列对数据帧排序(带条件),r,sorting,dataframe,conditional-statements,R,Sorting,Dataframe,Conditional Statements,我在R中有以下数据帧: DataTable <- data.frame( Name = c("Nelle","Alex","Thomas","Jeff","Rodger","Michi"), Age = c(17, 18, 18, 16, 16, 16), Grade = c(1,5,3,2,2,4) ) Name Age Grade 1 Nelle 17 1 2 Alex 18 5 3 Thomas 18 3 4 Jeff 16

我在R中有以下数据帧:

DataTable <- data.frame( Name = c("Nelle","Alex","Thomas","Jeff","Rodger","Michi"), Age = c(17, 18, 18, 16, 16, 16), Grade = c(1,5,3,2,2,4) )

    Name Age Grade
1  Nelle  17     1
2   Alex  18     5
3 Thomas  18     3
4   Jeff  16     2
5 Rodger  16     2
6  Michi  16     4
Name
列中有更多年龄相同的人,他们应该按字母顺序排序。如果条件为多人同龄,则数据框应按
名称
的字母顺序排序。输出应如下所示:

    Name Age Grade
1   Jeff  16     2
2  Michi  16     2
3 Rodger  16     4
4  Nelle  17     1
5   Alex  18     5
6 Thomas  18     3

希望您能帮助我按字母顺序排列数据框。

根据@Stezzo的评论更新答案

只需在
order
函数中添加,
DataTable[,1]

DataTable[order(DataTable[,2], DataTable[, 1]),]

#    Name Age Grade
# 4   Jeff  16     2
# 6  Michi  16     4
# 5 Rodger  16     2
# 1  Nelle  17     1
# 2   Alex  18     5
# 3 Thomas  18     3

记住,参数传递的顺序很重要。它首先对DATABATE DATAFRAM W.R.T第二列进行排序,如果有关联,它将考虑第二个参数,即第一列。

< P>除了@ Ronak Shah回答之外,还可以使用<代码>排列< <代码> >代码> DPLYR 。 对我来说,这看起来有点简单

arrange(DataTable,Age,Name)
给予

    Name Age Grade
1   Alex  16     3
2   Jeff  16     2
3  Michi  16     4
4 Rodger  16     2
5  Nelle  17     1
6   Alex  18     5
7 Thomas  18     4

在这里,它首先按
年龄
排序,然后按
姓名
排序,您可以添加更多变量,依此类推。

您检查过相关问题吗?在这个主题上有很多线程这是有效的:
DataTable[order(DataTable[,“Age”]、DataTable[,“Name”]),]
。在我看来,您不必对使用
。如果出于某种原因你不得不这样做,请解释原因。注意:编码时少就是多。
    Name Age Grade
1   Alex  16     3
2   Jeff  16     2
3  Michi  16     4
4 Rodger  16     2
5  Nelle  17     1
6   Alex  18     5
7 Thomas  18     4