我在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 :(得分: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
列中。