排列数据框逆序

时间:2014-05-25 14:14:43

标签: r sorting plyr

我有一个我想订购的数据框(不是按字母顺序排列),所以我写了这个

z
  Grupos prueba$pendiente
1     TR         12.48182
2 TR2x45         39.87879
3     UT         20.89545
4 UT2x45         36.89015
orden
[1] "UT"     "TR"     "UT2x45" "TR2x45"
z<-arrange(z,orden)
z
  Grupos prueba$pendiente
1 TR2x45         39.87879
2 UT2x45         36.89015
3     TR         12.48182
4     UT         20.89545
  

dput(z)的   结构(列表(Grupos =结构(c(4L,3L,2L,1L),。Label = c(&#34; UT&#34;,   &#34; TR&#34;,&#34; UT2x45&#34;,&#34; TR2x45&#34;),class =&#34; factor&#34;),prueba$pendiente = c(39.8787878787918,   36.8901515151553,12.4818181818195,20.8954545454566)),. Name = c(&#34; Grupos&#34;,   &#34; prueba $ pendiente&#34;),row.names = c(NA,-4L),class =&#34; data.frame&#34;)

安排功能正在运行,唯一的问题是我得到了错误的顺序(反向)我希望UT成为我的第一个值,就像在orden向量中一样。 我确定这是一件非常愚蠢的事情,但我无法解决这个问题。

谢谢

4 个答案:

答案 0 :(得分:1)

decreasing = TRUE添加到arrange

> arrange(z, orden, decreasing = TRUE)
##   Grupos prueba.pendiente
## 1     UT         20.89545
## 2     TR         12.48182
## 3 UT2x45         36.89015
## 4 TR2x45         39.87879

或者,您可以重新考虑Grupos并使用order函数来确定&#34;子集&#34;订单。

> z$Grupos <- factor(z$Grupos, levels = orden)
> z[order(z$Grupos), ]
##   Grupos prueba.pendiente
## 3     UT         20.89545
## 1     TR         12.48182
## 4 UT2x45         36.89015
## 2 TR2x45         39.87879

答案 1 :(得分:0)

z[order(orden,decreasing=TRUE),]

答案 2 :(得分:0)

你可以改变orden

的顺序
arrange(z,rev(orden))

答案 3 :(得分:0)

您还可以使用简单基本函数match

z[match(orden, z$Grupos),]