gpt4 book ai didi

r - 如何进行通用订单

转载 作者:行者123 更新时间:2023-12-01 08:03:52 25 4
gpt4 key购买 nike

我有一个数据库作为数据框,我想对所有列进行排序,但保持元素之间的关系。例如,如果我执行以下操作:

> DF
A B C D
1 11 2 432 4
2 11 3 432 4
3 13 4 241 5
4 42 5 2 3
5 51 5 332 2
6 51 5 332 1
7 51 5 332 1
> DF=DF[order(A,B,C,D),]
> DF
A B C D
1 11 2 432 4
2 11 3 432 4
3 13 4 241 5
4 42 5 2 3
6 51 5 332 1
7 51 5 332 1
5 51 5 332 2

好吧,这就是我想要的(注意最后两行),但我想要一个通用的解决方案,与列数无关。我已经尝试过以下方法,但不起作用。

> DF=DF[order(colnames(DF)),]
> DF
A B C D
1 11 2 432 4
2 11 3 432 4
3 13 4 241 5
4 42 5 2 3

如果有人能帮助我解决这个小问题,我将不胜感激。问候。

最佳答案

我们可以使用 do.callorder 对数据集的所有列进行排序

DF[do.call(order, DF),]

如果我们使用 tidyverse,则 arrange_at 将采用列名称

library(dplyr)
DF %>%
arrange_at(vars(names(.)))
#or as @Sotos commented
#arrange_all()
#or
#arrange(!!! rlang::syms(names(.)))
# A B C D
#1 11 2 432 4
#2 11 3 432 4
#3 13 4 241 5
#4 42 5 2 3
#5 51 5 332 1
#6 51 5 332 1
#7 51 5 332 2

关于r - 如何进行通用订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203262/

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