gpt4 book ai didi

R:从 dcast 输出中按数字而不是按字典顺序重新排序列

转载 作者:行者123 更新时间:2023-12-04 09:32:27 26 4
gpt4 key购买 nike

这是关于对包含数字和文本的列名称进行排序。我有一个来自 dcast 的数据框并有 200 行。我有订购问题。

列名称采用以下格式:

names(DF) <- c('Testname1.1', 'Testname1.100','Testname1.11','Testname1.2',...,Testname2.99)

编辑:我希望将列排序为:
names(DF) <- c('Testname1.1, Testname1.2,Testname1.3,...Testname1.100,Testname2.1,...Testname 2.100)

原始输入有一个指定日期的列,但是当我“转换”数据时没有使用它。有没有办法指定“dcast”函数来按数字顺序排列组合列名?

在 R 中按照我的需要对列进行排序的最简单方法是什么?

非常感谢!

最佳答案

我认为您需要先拆分列,然后才能使用它对数据框进行排序:

library("reshape2")  ## for colsplit()
library("gtools")

构建测试数据:
dat <- data.frame(matrix(1:25,5))
names(dat) <- c('Testname1.1', 'Testname1.100',
'Testname1.11','Testname1.2','Testname2.99')

拆分和排序:
cdat <- colsplit(names(dat),"\\.",c("name","num"))
dat[,order(mixedorder(cdat$name),cdat$num)]

## Testname1.1 Testname1.2 Testname1.11 Testname1.100 Testname2.99
## 1 1 16 11 6 21
## 2 2 17 12 7 22
## 3 3 18 13 8 23
## 4 4 19 14 9 24
## 5 5 20 15 10 25
mixedorder()上面(从@BondedDust 的回答中借来的)对于这个例子来说并不是真正必要的,但是如果第一个 ( Testnamexx ) 组件有超过 9 个元素,则需要 Testname1 , Testname2 , 和 Testname10会以正确的顺序出现。

关于R:从 dcast 输出中按数字而不是按字典顺序重新排序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412741/

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