如何按列对数据帧排序?

时间:2019-12-05 03:18:25

标签: r sorting dataframe

我想按一列(第一列,称为初始)的数据对数据帧进行排序。我的数据框是: 我称自己的数据框为:t2

Initial            Final        Changes
    1              1              200
    1              3              500
    3              1              250
    24             25             175
    21             25             180
    1              5             265
    3              3             147

我正在尝试使用代码:

t2 <- t2[order(t2$Initial, t2$Final, decreasing=False),]

但是,结果是以下类型:

Initial            Final       Changes
     3              1              250
     3              3             147
    21             25             180
    24             25             175
    1              5              265
    1              1              200
    1              3              500

当我尝试使用代码时:

t2 <- t2[order(t2$Initial, t2$Final, decreasing=TRUE),]

结果是:

Initial            Final       Changes
    1              5           265
    1              1           200
    1              3           500    
    24             25          175
    21             25          180
    3              1           250
    3              3           147

我不知道会发生什么。 你能帮我吗?

1 个答案:

答案 0 :(得分:3)

列类型可能为factor,在这种情况下,应将其转换为numeric并且应该起作用

library(dplyr)
t2 %>%        
    arrange_at(1:2, ~ desc(as.numeric(as.character(.))))

或与base R

t2[1:2] <- lapply(t2[1:2], function(x) as.numeric(as.character(x)))
t2[do.call(order, c(t2[1:2], decreasing = TRUE)), ]

或者OP的代码也应该工作


注意到第一个选项OP中的decreasing = False尝试过(可能是拼写错误)。在R中,它是大写字母FALSE

t2[order(t2$Initial, t2$Final, decreasing=FALSE),]