我想按一列(第一列,称为初始)的数据对数据帧进行排序。我的数据框是: 我称自己的数据框为: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
我不知道会发生什么。 你能帮我吗?
答案 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),]