【问题标题】:How to reorder the elements in the vector according to the indexes given如何根据给定的索引对向量中的元素进行重新排序
【发布时间】:2019-12-14 17:10:58
【问题描述】:

我正在尝试为月份创建一个向量,这样月份的顺序将从第 m 个 + 1 的输入开始。(第 m 个是输入)

例如,如果输入,mth = 7,那么向量中的月份将从“August”开始,然后是“september”,....(即mth + 1,输入后一个月)。

另一个例子是:

如果第 m = 3,则月份的向量将为 月份 = c("四月","九月",......,"三月")

我想要做的是自动化我的代码的最后一行,我已经尝试过了,但我不知道如何继续。

year <- "2009"
mth <- "7"
day <- "1"

df <- as.data.frame(cbind(year,month,day))
df.date <- as.Date(with(df, paste(year,month,day,sep="-")),"%Y-%m-%d")

Month <- c("Aug","Sep","Oct","Nov","Dec","Jan","Feb","Mar","Apr","May","Jun","Jul")

我希望代码可以帮助我根据第 mth 的输入自动化月份,这样我就不需要手动更改它了。

【问题讨论】:

    标签: r list conditional-statements element


    【解决方案1】:

    另一个使用 headtail 封装在函数 f 中的选项

    f <- function(mth = 3) c(tail(month.abb, -mth), head(month.abb, mth))
    f(3)
    #[1] "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec" "Jan" "Feb" "Mar"
    

    month.abb 是内置的 R 常数之一,给出了一个包含所有 3 个字母月份缩写的向量。

    【讨论】:

    • 感谢 jogo 提供更短的代码,它对我有很大帮助并节省了我的时间! :)
    【解决方案2】:

    你在找这个吗?

    mths = c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
    mth = 3
    
    mths2 = c(mths[(mth+1):length(mths)],mths[1:mth])
    > mths2
     [1] "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec" "Jan" "Feb" "Mar"
    

    【讨论】:

    • mths[c((mth+1):length(mths), 1:mth)]c(tail(mths, -mth), head(mths, mth))
    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2010-09-21
    • 2020-09-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    相关资源
    最近更新 更多