我有一组看起来像这样的数据(earningsCont):
Total
AUD -19556.74
BRL 0.00
CAD -163998.27
CHF -32616.65
CNY -45431.39
EUR -1011586.67
GBP -1656961.94
HKD -10447.83
JPY -297209.34
PLN -41066.64
MXN -24674.11
NZD -154168.05
当我输入此命令时,我丢失了行名称:
earningsCont[order(earningsCont$Total),]
该命令给了我这个:
[1] -1656961.94 -1011586.67 -297209.34 -163998.27 -154168.05 -45431.39 -41066.64 -32616.65
[9] -24674.11 -19556.74 -10447.83 0.00
我无法弄清楚我在这里做错了什么。我想要的是我开头的同一个列表,但是按“总计”列排序。
答案 0 :(得分:4)
从[.data.drame
返回单个列的默认设置是松开' data.frame'类,只是给一个向量。您可以使用第三个参数drop=FALSE
(我称之为dat
)
> dat[order(dat$Total), , drop=FALSE]
Total
GBP -1656961.94
EUR -1011586.67
JPY -297209.34
CAD -163998.27
NZD -154168.05
CNY -45431.39
PLN -41066.64
CHF -32616.65
MXN -24674.11
AUD -19556.74
HKD -10447.83
BRL 0.00
如果你确实想要带有相关rownames的排序值,那么这将提供:
> setNames( dat[order(dat$Total),], rownames(dat)[order(dat$Total)] )
GBP EUR JPY CAD NZD CNY
-1656961.94 -1011586.67 -297209.34 -163998.27 -154168.05 -45431.39
PLN CHF MXN AUD HKD BRL
-41066.64 -32616.65 -24674.11 -19556.74 -10447.83 0.00