【问题标题】:Shifting multiple columns down by one row in R在R中将多列向下移动一行
【发布时间】:2020-07-13 10:58:12
【问题描述】:

我的数据集中有很多列,我需要将 18:101 的列向下移动一行。到目前为止,我在另一个线程中发现这个命令是 helfpul,下面我将它应用到我的数据中:

data.xts$AR2_Forecast <- transform(data.xts$AR2_Forecast, AR2_Forecast = c(NA, AR2_Forecast[-nrow(data.xts$AR2_Forecast)]))

但是,由于我有 83 个额外的列,因此更改名称将非常耗时。有什么我可以使用的东西可以节省我的时间吗?

我在想一些类似的事情:

data.xts[18:101]<-

但我不确定转换函数的外观。 我的数据类是“xts”、“zoo”。

感谢您的任何反馈!

【问题讨论】:

  • 同样的方法也适用于xts 类。请参阅我编辑的答案。

标签: r variables transform xts


【解决方案1】:

我认为您可以使用 dplyr::select() 和 dplyr::lag() 来更有效地执行此操作。

【讨论】:

    【解决方案2】:

    您可以使用与一列相同的方法,例如通过这样做:

    df[, 18:101] <- rbind(rep(NA, 101-17), df[seq_len(nrow(df)-1), 18:101] )
    

    编辑: 对于 xts,请尝试:

    df[, 18:101] <- rbind(rep(NA, 101-17), coredata(df[1:(nrow(df)-1), 18:101] ))
    

    【讨论】:

    • 这个方法不行,据我了解是因为我的数据类是xts,不是data.frame
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    相关资源
    最近更新 更多