按R中的预定字符串对行重新排序

时间:2016-05-18 23:09:40

标签: r

我知道这是一个简单的问题所以我提前道歉。

如果我有这样的数据框:

git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"

我希望按类重新排序行,如:

| name  | count | class       |
|-------|-------|-------------|
| bob   | 1     | first grade |
| adam  | 5     | college     |
| suzie | 7     | high school |  

我不能使用| name | count | class | |-------|-------|-------------| | bob | 1 | first grade | | suzie | 7 | high school | | adam | 5 | college | ,因为我不希望按字母顺序重新排序。

我试过了,但失败了:

order()

这应该很简单......但是,当列中的值具有某种字母数字结构时,通常会保留重新排序。这里,结构由我定义。

我想我可以添加一个新列,为类分配数字,然后按类别进行排序。但必须有一个更优雅的方式?

3 个答案:

答案 0 :(得分:2)

根据您想要的顺序,使class成为factor,然后使用order()

df$class = factor(df$class, levels = target)
df[order(df$class), ]

答案 1 :(得分:1)

我认为你可以通过有序因素来做到这一点。 首先从您感兴趣的变量中创建一个因子变量

d <- df$class

然后按照您希望的顺序订购因子

x <- ordered(factor(d), levels=c('first grade','high school','college'))

然后用它来订购你的df

df[order(x),]

完成工作,去玩棋盘游戏。

答案 2 :(得分:1)

您的NET USE需要稍加修改才能发挥作用:

match