【发布时间】:2014-07-24 23:34:01
【问题描述】:
我需要重新排序类似于下面的数据框。我需要 London 首先出现在任何不同的 Var 中,但是保持 var 的顺序(“pop,gdp,lifespec ...)是非常关键的,因为我之后正在做矩阵代数。
City Var value
Chicago pop 0.08
London pop 0.24
Paris pop 0.75
Chicago gdp 0.55
London gdp 0.49
Paris gdp 0.23
Chicago lifespec 0.45
London lifespec 0.39
Paris lifespec 0.28
Chicago percjobs 0.12
London percjobs 0.13
Paris percjobs 0.01
所以我想要的输出如下所示:
City Var value
London pop 0.24
Chicago pop 0.08
Paris pop 0.75
London gdp 0.49
Chicago gdp 0.55
Paris gdp 0.23
London lifespec 0.39
Chicago lifespec 0.45
Paris lifespec 0.28
London percjobs 0.13
Chicago percjobs 0.12
Paris percjobs 0.01
我尝试创建一个df$rank,其值为伦敦,其他值为 9。然后我尝试使用sort(),但所有伦敦值都在顶部崩溃。你有什么想法吗?
【问题讨论】:
-
像这样使用
order:DF[order(DF$Var, DF$City != "London"), ]。请下次显示dput(DF)的输出,以便重现性。 -
@G.Grothendieck:我认为这不会保留
DF$Var的顺序,而是会按其级别顺序(可能是字母顺序)对其进行排序。首先这样做可能会有所帮助:DF$Var <- factor(DF$Var, unique(DF$Var)).