在R中为每个独特的日期分配编号

我有一列日期值。我试图将最近的日期标记为1,将最近之前的日期标记为2,以此类推。这里我使用了 dplyr 来实现这个目标,但在执行代码后,我得到的结果一直是’1’。

date = c("2020-01-20","2020-01-21","2020-01-22","2020-01-23","2020-01-24")
df = as.data.frame(date)
df$date= as.Date(df$date)

max_date=max(df$date)
min_date =min(df$date)

ll <- seq(min_date, max_date, by = "day")

df$day_no = case_when(
  ( max(df$date) ==as.Date(ll[5])) ~ as.integer(1),
  ( max(df$date)-1 ==as.Date(ll[4])) ~ as.integer(2),
  ( max(df$date)-2 ==as.Date(ll[3])) ~ as.integer(3),
  ( max(df$date)-3 ==as.Date(ll[2])) ~ as.integer(4),
  ( max(df$date)-4 ==as.Date(ll[1])) ~ as.integer(5),
  TRUE ~ as.integer(NA)
  ) 

我所要的输出结果如下。

day_no = c(5,4,3,2,1)
day_no = as.integer(day_no)
df = data.frame(date,day_no)

先谢谢你

解决方案:

另一种方法是使用 xxx_rank 在dplyr或 rank 在基础R中。

df %>% 
  mutate(day_no = dense_rank(desc(date)))

选择一个适合你的数据集的就可以了。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Android.FileProvider.getUriForFile "找不到配置的根"。FileProvider.getUriForFile "未能找到配置的根"

2022-5-13 10:00:25

解决方案

用jQuery懒加载html视频

2022-5-13 11:00:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索