R:使用因子对两列进行排序

时间:2013-11-09 23:20:03

标签: string r sorting

我想按两列排序一个帧,一个是数字列,另一个是因子列。

示例:

Values  Size       Length
1       "Small"      10
2       "Big"        6
3       "Small"      30
4       "Medium"     22
5       "Very Small" 17
6       "Small"      16

我知道如何用两列来表达:

myFrame <- myFrame[order(myFrame$Size,myFrame$Length)]

但是,我想将列大小从"Very Small""Small""Medium""Big",而不仅仅是按字母顺序排列。

结果应如下所示:

Values   Size           Length
5        "Very Small"   17
1        "Small"        10
3        "Small"        30
6        "Small"        16
4        "Medium"       22
2        "Big"          6

如何根据 factor 列对数据集进行排序?

1 个答案:

答案 0 :(得分:1)

您可以将Size列转换为ordered factor list

> d <- read.table(header=T, text='    Values  Size       Length
+     1       "Small"      10
+     2       "Big"        6
+     3       "Small"      30
+     4       "Medium"     22
+     5       "Very Small" 17
+     6       "Small"      16')

> d$Size <- factor(d$Size, levels=c("Very Small", "Small", "Medium", "Big"))
> d[order(d$Size), ]
  Values       Size Length
5      5 Very Small     17
1      1      Small     10
3      3      Small     30
6      6      Small     16
4      4     Medium     22
2      2        Big      6