【问题标题】:Is there a simple way of reversing the dates in a dataframe in R?有没有一种简单的方法可以在 R 中反转数据框中的日期?
【发布时间】:2021-12-01 22:13:15
【问题描述】:

我已将比特币的每日价格下载为 .csv 文件,数据从 2021 年到 2017 年排序,但我希望它从 2017 年到 2021 年。我最好的解决方案是通过索引来反转每一列,但是这有点耗时,每个资产有 10 列,至少还有 4 个资产要走。有没有办法一次简单地反转整个数据集?我尝试了 rev(),它只是颠倒了列的顺序,这没有帮助。

BTC <- read.csv("Binance_BTCUSDT_d.csv", skip = 1)
  n1 <- nrow(BTC)
  BTC$date  <- as.Date(BTC$date[n1:1])
  BTC$open  <- BTC$open[n1:1]
  BTC$close <- BTC$close[n1:1]
  BTC$Volume.BTC <- BTC$Volume.BTC[n1:1]
  BTC_tradecount <- BTC$tradecount[n1:1]
  BTC$high <- NULL
  BTC$low <- NULL
  BTC$unix <- NULL
  BTC$symbol <- NULL
  BTC$Volume.USDT <- NULL
  BTC$tradecount <- NULL

我还必须删除一些列并“手动”执行此操作。如果有任何巧妙的方法可以一次删除多个列,我也将不胜感激。

【问题讨论】:

  • 请提供reproducible example。可以访问您的数据(.csv 文件)。如果要对行进行排序,可以使用BTC &lt;- BTC[order(date),]

标签: r date sorting reversing


【解决方案1】:

对于排序行,您可以使用:

BTC <- BTC[order(BTC$date),]

要一次删除多个列,可以使用包 dplyr:

library('dplyr')

BTC <- BTC %>% select(-high, -low, -unix, -symbol, -Volume.USDT, -tradecount)

如果列从高到交易计数,您可以将其缩短为:

BTC <- BTC %>% select(-(high:tradecount))

【讨论】:

  • 谢谢!删除列效果很好。我仍然无法重新排列列。我做了一个简单的可重现示例:``` df
  • 我编辑了对 `df 的回答
猜你喜欢
  • 1970-01-01
  • 2020-03-22
  • 2017-04-15
  • 1970-01-01
  • 2020-01-25
  • 2021-01-09
  • 2010-11-14
  • 2010-09-06
  • 2021-10-03
相关资源
最近更新 更多