2015-05-18 81 views
2

我在r具有一個數據幀,看起來像這樣:重新排序的數據幀

Wave_Expo Tide_Zone avg 
1 HighEx  High  5.750000 
2 HighEx  Low  5.333333 
3 HighEx  Mid  7.833333 
4 LowEx  High  4.083333 
5 LowEx  Low  5.916667 
6 LowEx  Mid  4.916667 
7 MidEx  High  4.583333 
8 MidEx  Low  5.833333 
9 MidEx  Mid  4.090909 

我一直在試圖通過Tide_Zone列重新安排它如此這般低,中,高,同時保持曝光欄的順序,但沒有運氣。我覺得必須有一些簡單的方法。任何幫助?

+0

高,低,中真的你想要的Wave_Expo的順序? – Gregor

+0

您的列是字符串還是因素? –

回答

2

指定使用levels各因素的順序:

dat$Tide_Zone = factor(dat$Tide_Zone, levels = c("Low", "Mid", "High")) 
dat$Wave_Expo = factor(dat$Wave_Expo, levels = c("HighEx", "LowEx", "MidEx")) 
# the default is alphabetical, which is how your Wave_Expo column are ordered 
# I included that line just to make it clear, you could change it... 

重新排序數據第一分揀由Wave_Expo,然後Tide_Zone。

dat = dat[order(dat$Wave_Expo, dat$Tide_Zone), ] 

如果他們開始爲人物,我建議做這個過程,那麼在這種期望的順序添加id列,然後如果需要轉換回character。然後,如果您需要再次重新訂購,則此訂單將保留在id列中。

+0

這很好。謝謝! – Tom