关于排序:R中的函数重新排序和排序值

Function reorder in R and ordering values

本问题已经有最佳答案,请猛点这里访问。

我正在尝试以下功能:

1
2
stest <- data.frame(group=c("John","Jane","James"), mean=c(3, 5, 1))
transform(stest, group = reorder(group, mean))

预计产量由mean订购。相反,我得到:

1
2
3
4
  group mean
1  John    3
2  Jane    5
3 James    1

也就是说,与原始数据帧中的顺序相同。

我错过什么了吗?如何通过数据帧的一个数值变量正确排序?

周围的建议是关于使用reorder,但我不能让它按预期工作。装载的包裹会有干扰吗?


From the documentation

reorder is a generic function. The"default" method treats its first argument as a categorical variable, and reorders its levels based on the values of a second variable, usually numeric.

备注等级,而不是柱

比较:

1
2
levels(stest$group)
[1]"James""Jane" "John"

ZZU1

第1版

从你身上

"@Chargaff Yep,it returns the right order,but when I trying to use this dataframe in GGPLOT,GGPLOT still plots it in the previous order."

看起来你真的很想把电梯升级为一个GPLOT。我建议你:

1
stest$group <- reorder(stest$group, stest$mean)

第二版

这是你最后一条密码线上的"无效"的方法。Clearly it does:

1
2
3
4
5
6
7
8
9
10
> stest$group
[1] John  Jane  James
Levels: James Jane John         # <-------------------------------
> stest$group <- reorder(stest$group, stest$mean)              # |
> stest$group                                                  # |
[1] John  Jane  James                                          # |
attr(,"scores")                                                # | DIFFERENT :)
James  Jane  John                                              # |
    1     5     3                                              # |
Levels: James John Jane        # <--------------------------------


我发现我的错误,感谢使用1317221克等。

The code code that would order my dataset is:

1
stest$group <- reorder(stest$group, stest$mean, FUN=identity)

惠尔

1
stest$group <- reorder(stest$group, stest$mean)

你不需要我的数据框我不知道为什么不工作,但我必须要特别注意identity

可能的原因是:重整因子给不同的结果,取决于装载的包装

更新

这还不足以成为第一条密码线It's not enough to have the first line of code.第二个因素不包括第二个因素,最终命令可能不完整(E.G.,Higher Values Below Lower Values in Descriming Order)。

因此,确保你有正确的命令:

1
stest$group <- reorder(stest$group, as.factor(stest$mean), FUN=identity)


我想你想要的是order函数,返回一个索引,而不是reorder函数,这是用来改变因子水平的顺序。这会成功的。

1
> stest[order(stest$mean),]