gpt4 book ai didi

R:使用自定义顺序按名称重新排序数字向量

转载 作者:行者123 更新时间:2023-12-01 01:57:41 24 4
gpt4 key购买 nike

我有一个数字向量,想使用自定义顺序按名称重新排序。

x <- sample(1:20, 5)
names(x) <- c("feb", "may", "mar", "jan", "apr")
x
feb may mar jan apr
7 10 5 13 11

如您所见,向量不是按月顺序排列的

期望输出

我希望使用名称按月顺序重新排序此字符向量,即 jan, feb, mar, apr, may...
这怎么可能?

注意:我追求的是一种可以用于所有名称/字符串的方法,而不是专门用于日期对象

最佳答案

我们可以转换 names 'x' 到 factor并设置 levelsmonth.abb在小写中,应用 order并按该顺序获取“x”。

x[order(factor(names(x), levels=tolower(month.abb)))]
jan feb mar apr may
13 7 5 11 10

转换为 factorlevels specified 可以按自定义顺序应用于任何字符向量,否则,默认情况下,排序基于字母顺序,即
x[order(names(x))]

假设,如果希望命令为“jan”、“mar”、“apr”、“may”、“feb”,请将其用作 levelsfactor称呼
x[order(factor(names(x), levels = c('jan', 'mar', 'apr', 'may', 'feb')))]

由于 OP 在评论中以自定义顺序发布了另一个向量
x1 <- c(icecream = 3, jelly = 4, fruit = 5)
x1[order(factor(names(x1), levels = c("jelly", "fruit", "icecream")))]
# jelly fruit icecream
# 4 5 3

关于R:使用自定义顺序按名称重新排序数字向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39065263/

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