我想按两列排序一个帧,一个是数字列,另一个是因子列。
示例:
Values Size Length
1 "Small" 10
2 "Big" 6
3 "Small" 30
4 "Medium" 22
5 "Very Small" 17
6 "Small" 16
我知道如何用两列来表达:
myFrame <- myFrame[order(myFrame$Size,myFrame$Length)]
但是,我想将列大小从"Very Small"
到"Small"
到"Medium"
到"Big"
,而不仅仅是按字母顺序排列。
结果应如下所示:
Values Size Length
5 "Very Small" 17
1 "Small" 10
3 "Small" 30
6 "Small" 16
4 "Medium" 22
2 "Big" 6
如何根据 factor 列对数据集进行排序?
答案 0 :(得分:1)
您可以将Size
列转换为ordered
factor list:
> d <- read.table(header=T, text=' Values Size Length
+ 1 "Small" 10
+ 2 "Big" 6
+ 3 "Small" 30
+ 4 "Medium" 22
+ 5 "Very Small" 17
+ 6 "Small" 16')
> d$Size <- factor(d$Size, levels=c("Very Small", "Small", "Medium", "Big"))
> d[order(d$Size), ]
Values Size Length
5 5 Very Small 17
1 1 Small 10
3 3 Small 30
6 6 Small 16
4 4 Medium 22
2 2 Big 6