我在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
现在生病将按其Age
列对此数据框进行排序。到目前为止没问题:
DataTable_sort_age <- DataTable[with(DataTable, order(DataTable[,2])),]
Name Age Grade
4 Jeff 16 2
5 Rodger 16 2
6 Michi 16 4
1 Nelle 17 1
2 Alex 18 5
3 Thomas 18 3
Name
列中有更多人具有相同年龄,并且应按字母顺序排序。如果多个人处于同一年龄的条件为真,则数据框应按字母顺序排列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
希望您能按字母顺序排序数据框来帮助我。
答案 0 :(得分:6)
根据@Stezzo的评论更新答案
只需在DataTable[, 1]
功能
order
即可
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
请记住,参数传递的顺序很重要。它会首先对DataTable数据帧w.r.t第二列进行排序,如果是平局,它会考虑第二个参数,即第一列。
答案 1 :(得分:3)
除了@Ronak Shah,您还可以使用arrange
的{{1}}。
它看起来有点简单。
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
然后Age
排序,然后您可以添加更多变量。