2016-08-01 39 views
1

我有一個名稱列的數據框,這些名稱重複(同樣的人有多個行條目)。我想根據我選擇的順序來訂購數據框。例如,這裏是問題的一個簡化版本:按照選定的目標順序排序R中的字符向量

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

所以我想是訂購df使所有與「C」的行是第一,其次是「A」行,那麼「B '行。

一種方式來做到這一點是數據幀到子集到單獨的情況下,再使用rbind,它的工作原理,但是這似乎並沒有有效地爲大dataframes有許多不同的名稱

+0

相關 - http://stackoverflow.com/questions/11977102/order-data-frame-rows-according-to-a-target-vector-that-specifies-the-desired-or/11977256 – thelatemail

回答

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),但您可以輕鬆地做到這一點。

相關問題