我需要根据数据框的两列制作一个条形图。对于正确的顺序,我需要重新排序一列的因子,并用它重新排序数据帧的其余部分。我试图重新排序因子,但其余列保持不变。如何对整个数据框进行排序?我将展示我对虹膜数据做了些什么(请注意,我的数据实际上有两个标称列)
> d<-iris
> head(d)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
> d$Species<-factor(d$Species, labels=c("virginica","setosa","versicolor"))
> head(d)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 virginica
2 4.9 3.0 1.4 0.2 virginica
3 4.7 3.2 1.3 0.2 virginica
4 4.6 3.1 1.5 0.2 virginica
5 5.0 3.6 1.4 0.2 virginica
6 5.4 3.9 1.7 0.4 virginica
>
正如您所见,Species
列按我的意愿排序,但其余列仍然存在。我该怎么办?
修改
我尝试了答案,并意识到,我没有充分说明我的问题: 当我求助数据帧时,我需要重新排列物种列因子的顺序。 除了重新排序的数据框之外,我正在寻找这个结果,因此在绘图时将使用此顺序:
head(d1$Species)
[1] virginica virginica virginica virginica virginica virginica
Levels: virginica setosa versicolor
直到现在,订单仍然不是我想要的: `
答案 0 :(得分:3)
d1 <- d[order(factor(d$Species, levels=c("virginica","setosa","versicolor"))),]
head(d1)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#101 6.3 3.3 6.0 2.5 virginica
#102 5.8 2.7 5.1 1.9 virginica
#103 7.1 3.0 5.9 2.1 virginica
#104 6.3 2.9 5.6 1.8 virginica
#105 6.5 3.0 5.8 2.2 virginica
#106 7.6 3.0 6.6 2.1 virginica
要更改因素levels
的{{1}},您必须:
Species
答案 1 :(得分:0)
require(plyr)
d <- iris
arrange(d, factor(d$Species, levels = c("virginica","setosa","versicolor")))