在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}}人
人已打赏
解决方案

'.join(searchfor), na=False) In my column VALUE, I have values like "AAAA", "BBBB", "ABAB", "BABA", "CAAB" Now I want to use my function to ...

2022-5-13 2:00:30

解决方案

检查迷你购物车页面的库存数量,Shopify

2022-5-13 2:00:32

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