0

我想按两列对框架进行排序,一列是数字列,另一列是因子列。

例子:

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)]

但是,我想对列 Size 从"Very Small"to"Small""Medium"to进行排序"Big",而不仅仅是按字母顺序。

结果应如下所示:

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

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

4

1 回答 1

1

您可以将该Size列转换为ordered因子列表

> 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
于 2013-11-10T00:18:57.343 回答