r - 为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
base r 中使用。
df %>%
mutate(day_no = dense_rank(desc(date)))
只需为您的数据集选择一个即可。
推荐阅读
- sql - 根据列之间的一对多关系复制行
- mysql - 更新 Woocommerce 优惠券描述 mysql
- delphi - TIpTCPServer 和 Client 在一个应用程序中
- android - 如何在 Android 中调试“您的用户 ID 无效。请使用有效的 API 密钥和用户 ID 组合”?
- javascript - onChipAdd 和 onChipDelete 不调用函数
- python - 高 CPU 负载(来自其他应用程序)会影响 python 性能/准确性吗?
- actionscript-3 - Adobe Flash CS3 - 仅在播放头到达定义的关键帧时“做某事”
- javascript - 使用相同的参数 JavaScript 多次调用函数
- javascript - 如何使用 javascript 缓冲/预加载 html5 视频
- r - 比较R中同一列中的两个变量