R中的order()函数按字母顺序排序整数

时间:2013-11-12 03:30:41

标签: r sorting dataframe

我从一个矢量开始,我将cbind()转换为一个字符列表,然后转换为数据帧:

numbers <- c(110, 5, 43, 1008)
mat <- cbind(letters, numbers)
letters <- c("A", "B", "C", "D")
df <- data.frame(mat)

我应用了排序:

df[order(df[,2]),]

我得到了:

  letters numbers
4       D    1008
1       A     110
3       C      43
2       B       5

它正在对列进行排序,就像它查看第一个数字,然后是第二个等等,我无法弄明白。 sort()函数适用于列,但我似乎无法应用于所有行...

谢谢!

1 个答案:

答案 0 :(得分:4)

您以错误的方式创建了data.frame。从字符矩阵开始,所有内容仍然是字符矩阵。你需要一个as.numeric()(或以不同的方式开始)。

R> df <- data.frame(letters=LETTERS[1:4], numbers=c(110, 5, 43, 1008),
+                   stringsAsFactors=FALSE)
R> df
  letters numbers
1       A     110
2       B       5
3       C      43
4       D    1008
R>

我们可以检查列类型:

R> sapply(df, class)
    letters     numbers 
"character"   "numeric" 
R>

然后,排序按预期工作:

R> df[order(df[,2]),]
  letters numbers
2       B       5
3       C      43
1       A     110
4       D    1008
R>