R中日期的排序列

时间:2018-11-11 20:31:05

标签: r sorting date

我有一个带有日期列的数据框。这些日期表示实际获取特定轮询结果的日期。但是,网站会获取这些结果并将其添加到表格中,而不一定是在进行投票的日期。例如:

  • 2018年1月20日
  • 21/01/2018
  • 2018年1月20日
  • 19/01/2018

因此顶部日期(20/01/2018)在以下日期之后 之后出现。但是下面的民意调查显示21日,那就是民意调查的日期,因此最早可以添加上述一项的日期是21日,因此该列表就成为了

  • 21/01/2018
  • 21/01/2018
  • 2018年1月20日
  • 19/01/2018

现在我的列已排序。我需要针对50个变量执行此操作!有什么建议吗? 我想对日期列进行排序,以便如果某个日期下有一个较晚的日期,那么如果我从该列的底部移至顶部,那么该日期也将成为该较晚的日期。 enter image description here

1 个答案:

答案 0 :(得分:0)

也许有更漂亮的方法,但这应该可以提供所需的输出:

data$Date <- as.POSIXct(rev(cummax(rev(as.numeric(data$Date)))), origin = "1970-01-01")

这个想法是,您希望自下而上滚动最大值,例如,一旦达到2018-01-02,则上面的行的日期不能小于2018-01-02。这是通过cummax函数完成的。它包含已达到的最大日期,并覆盖较早/较小的日期。由于您希望自下而上,因此您必须通过rev反转日期列,然后在调用cummax之后反转日期列。因为cummax仅适用于numeric输入,所以我将日期列转换为数字,最后又转换回date