R条件语句:如何在给定两组日期的情况下添加条件标签


employee <- c('Alfred','Mary','Susie', "Joan", "Dave")
startdate <- as.Date(c("2019-05-12","2020-09-23","2020-07-12","2021-11-10","2021-09-12"))
endate <- as.Date(c("2021-11-15","2021-11-15","2021-11-15","2021-11-15","2021-11-15")) 
date_R <- data.frame(employee,startdate,endate)
date_R2 <- date_R %>% 
mutate(date_dif = endate - startdate)

新手来了,提前找借口。。。

我正试着和两个约会对象绕过这张桌子我可以计算它们之间的天数差,非常简单。。到目前为止一切都很好lol

date_R2
employee  startdate     endate date_dif
1   Alfred 2019-05-12 2021-11-15 918 days
2     Mary 2020-09-23 2021-11-15 418 days
3    Susie 2020-07-12 2021-11-15 491 days
4     Joan 2021-11-10 2021-11-15   5 days
5     Dave 2021-09-12 2021-11-15  64 days

但我需要根据天数为每一行添加标签。

比方说:在不到10天的时间里,我会给出一个特定的标签;

30天以上另贴标签;

再过100多天,等等…

mutate动词可以做到这一点吗?(只是因为它似乎比创建一个函数简单得多。如果是这样的话,我必须遵循哪种方式?

如果我需要深入功能领域,作为一个像我这样的新手,有人能给我一个如何实现目标的例子吗?

非常感谢

我们可以使用cut创建breaks并标记它们。诀窍是从date_dif:中取出数字

library(dplyr)
library(readr)
date_R2 %>%
mutate(category = cut(parse_number(as.character(date_dif)), 
breaks = c(0,10,30,1000),
labels = c("<10", "10-30","30-1000")
))
employee  startdate     endate date_dif category
1   Alfred 2019-05-12 2021-11-15 918 days  30-1000
2     Mary 2020-09-23 2021-11-15 418 days  30-1000
3    Susie 2020-07-12 2021-11-15 491 days  30-1000
4     Joan 2021-11-10 2021-11-15   5 days      <10
5     Dave 2021-09-12 2021-11-15  64 days  30-1000

您可以在mutate 内部使用case

date_R2 <- date_R %>% 

mutate(date_dif = endate - startdate,
label = case_when(
date_dif < 30 ~ 'lower_30',
date_dif>= 30 ~ "upper_30"
)) 

最新更新