按选定的目标顺序排序R中的字符向量

时间:2016-08-01 00:39:42

标签: r dataframe

我有一个带有名称列的数据框,这些名称是重复的(同一个人有多个行条目)。我想根据我选择的顺序订购数据框。例如,以下是问题的简化版本:

df <- data.frame(index = rep(1, 12), name = sample( LETTERS[1:3], 12, replace = TRUE) )
target <- c( 'C', 'A', 'B' )

所以我想要的是订购df以便所有行都包含&#39; C&#39;首先是“A&#39; A&#39;行然后&#39; B&#39;行。

实现这一目标的一种方法是将数据框子化为单独的案例,然后使用rbind,这有效,但对于具有许多不同名称的大型数据框来说,这似乎并不高效

1 个答案:

答案 0 :(得分:2)

是的,你可以做到

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

#   index name
#1      1    C
#4      1    C
#5      1    C
#7      1    C
#9      1    C
#6      1    A
#10     1    A
#11     1    A
#12     1    A
#2      1    B
#3      1    B
#8      1    B

在行重新排序后,我没有将行名更新为1:nrow(df),但您可以轻松地将其更新。