R 按两列对数据帧排序(带条件)
我在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
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