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"
))