use*_*798 22 sorting r categories
我有一个类似于以下内容的分类数据集:
A<-data.frame(animal=c("cat","cat","cat","dog","dog","dog","elephant","elephant","elephant"),
color =c(rep(c("blue","red","green"),3)))
Run Code Online (Sandbox Code Playgroud)
我想订购它,以便动物用狗,然后大象,然后猫,然后颜色分为绿色,蓝色,然后红色.所以最后它看起来像
狗绿色,狗蓝色,狗红色,大象绿色,大象蓝色,...
ags*_*udy 38
应明确指定级别:
A$animal <- factor(A$animal, levels = c("dog", "elephant","cat"))
A$color <- factor(A$color, levels = c("green", "blue", "red"))
Run Code Online (Sandbox Code Playgroud)
然后您同时按2列排序:
A[order(A$animal,A$color),]
# animal color
# 6 dog green
# 4 dog blue
# 5 dog red
# 9 elephant green
# 7 elephant blue
# 8 elephant red
# 3 cat green
# 1 cat blue
# 2 cat red
Run Code Online (Sandbox Code Playgroud)
xm1*_*xm1 12
您也可以使用match- 您既不更改列类也不进行factor转换。
animalOrder = c("dog", "elephant","cat")
colorOrder = c("green", "blue", "red")
A[ order(match(A$animal, animalOrder), match(A$color, colorOrder)), ]
animal color
6 dog green
4 dog blue
5 dog red
9 elephant green
7 elephant blue
8 elephant red
3 cat green
1 cat blue
2 cat red
Run Code Online (Sandbox Code Playgroud)