在r中按字符重新排序数据帧

时间:2015-05-18 18:43:01

标签: r dataframe

我在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列重新排列它,使其低,中,高,同时保持曝光列顺序但没有运气。我觉得必须有一些简单的方法。有什么帮助吗?

1 个答案:

答案 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列中。