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

按R中的预定字符串对行重新排序,r,R,我知道这是一个简单的问题,所以我提前道歉 如果我有这样一个数据帧: | name | count | class | |-------|-------|-------------| | bob | 1 | first grade | | adam | 5 | college | | suzie | 7 | high school | 我想按类对行重新排序,如: | name | count | class | |------

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

如果我有这样一个数据帧:

| 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()
,因为我不希望类按字母顺序重新排序

我试过了,但失败了:

target <- c("first grade", "high school", "college")
df[match(target, df$class),]  

target将
class
a
factor
的级别按您想要的顺序设置,然后使用
order()


class
a
factor
与所需的级别进行排序,然后使用
order()


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

d <- df$class

完成任务,去玩棋盘游戏。

我想你可以通过有序因子来完成。 首先从您感兴趣的变量中创建一个因子变量

d <- df$class

完成任务,去玩棋盘游戏。

您的
匹配项需要稍加修改才能正常工作:

df[order(match(df$class, target)),]

您的
匹配项
需要稍加修改才能正常工作:

df[order(match(df$class, target)),]

或者不转换列:
df[order(factor(df$class,levels=target)),]
或者不转换列:
df[order(factor(df$class,levels=target)),]
您不需要一个
ordered
因子才能使级别具有订单。即使是常规因子也会按照您指定的顺序设置级别<只有当您希望模型中的对比度为2v1、3v2、4v3,而不是通常的2v1、3v1、4v1等时,才需要代码>有序的
因子。感谢您的提醒Gregor。您不需要<代码>有序的
因子,级别才有秩序。即使是常规因子也会按照您指定的顺序设置级别<代码>有序仅当您希望模型中的对比度为2v1、3v2、4v3而不是通常的2v1、3v1、4v1等时,才需要因子。感谢您的提醒Gregor。
df[order(match(df$class, target)),]