a a b-6ren">
gpt4 book ai didi

r - 如何按字典顺序订购我的数据框

转载 作者:行者123 更新时间:2023-12-04 06:06:14 24 4
gpt4 key购买 nike

我有以下数据框

a = data.frame(a=c(1,2,3,4,5,6,7),b=c(1,2,3,10,12,21,4),c=c(1,2,10,11,"X","Y",3))
> a
a b c
1 1 1 1
2 2 2 2
3 3 3 10
4 4 10 11
5 5 12 X
6 6 21 Y
7 7 4 3

我想按字典顺序对整个数据框进行排序,以便输出(例如,列“c”)应类似于
> a[,"c"]
[1] 1 2 3 10 11 X Y

我试过了,得到了不同的答案
indata <- a[do.call(order,a[,c("c","a","b")]),]
> indata[,"c"]
[1] 1 10 11 2 3 X Y
Levels: 1 10 11 2 3 X Y

我尝试了gtools,mixedorder软件包,并且在一栏上工作良好:
> a[mixedorder(a$c),]
a b c
1 1 1 1
2 2 2 2
3 3 3 10
4 4 10 11
5 5 12 X
6 6 21 Y
7 7 4 3

但是如果我包含多个列,它将不起作用:
> a[with(a,order(mixedorder(c),mixedorder(b),mixedorder(a))),]
a b c
1 1 1 1
2 2 2 2
4 4 10 11
5 5 12 X
6 6 21 Y
7 7 4 3
3 3 3 10

虽然我期望:
  a  b  c
1 1 1 1
2 2 2 2
4 7 4 3
5 3 3 10
6 4 10 11
7 5 12 X
3 6 21 Y

最佳答案

一种选择是使用 gtools 软件包中的mixedorder()

library(gtools)
a[mixedorder(a$c),]
# a b c
# 1 1 1 1
# 2 2 2 2
# 7 7 4 3
# 3 3 3 10
# 4 4 10 11
# 5 5 12 X
# 6 6 21 Y

关于r - 如何按字典顺序订购我的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com