我有一个带有名称列的数据框,这些名称是重复的(同一个人有多个行条目)。我想根据我选择的顺序订购数据框。例如,以下是问题的简化版本:
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
,这有效,但对于具有许多不同名称的大型数据框来说,这似乎并不高效
答案 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)
,但您可以轻松地将其更新。