我有一个带有日期列的数据框。这些日期表示实际获取特定轮询结果的日期。但是,网站会获取这些结果并将其添加到表格中,而不一定是在进行投票的日期。例如:
因此顶部日期(20/01/2018)在以下日期之后 之后出现。但是下面的民意调查显示21日,那就是民意调查的日期,因此最早可以添加上述一项的日期是21日,因此该列表就成为了
现在我的列已排序。我需要针对50个变量执行此操作!有什么建议吗? 我想对日期列进行排序,以便如果某个日期下有一个较晚的日期,那么如果我从该列的底部移至顶部,那么该日期也将成为该较晚的日期。 enter image description here
答案 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
。