如何解决筛选级别并获取值
我的情况有点复杂, 我正在运营一家诊所,需要您帮忙解决以下问题:
我有一个列,它是因子类型“ c_code”,并且它具有许多具有不同长度的级别。 在每一行中,我都有一个“会话”列,它指示客户端的会话号。 我正在尝试仅获取每个c_code级别的最高会话,并检查自从这名专家接受治疗以来是否已经超过一周。 这是我正在使用的DF:
如您所见,我正在尝试使用此行:
mutate(bigThan6= if_else(as.double(todayDate - date) > 6,1,0))
因此,如果差异大于6,则“ bigThan6”列将获得1。
我的问题是如果我不希望在我的整个行中都完成它- 仅图片中突出显示的那些:每个“ c_code”级别的最高会话
解决方法
您可以执行以下操作。
library(dplyr)
df %>%
group_by(c_code) %>%
mutate(bigThan6 = +(session == max(session) &
toDate - date > 6))
# c_code session date toDate bigThan6
# <chr> <dbl> <date> <date> <int>
# 1 a 1 2020-01-01 2020-11-09 0
# 2 a 2 2020-01-10 2020-11-09 1
# 3 b 2 2020-01-20 2020-11-09 0
# 4 b 3 2020-01-23 2020-11-09 1
# 5 c 3 2020-11-07 2020-11-09 0
# 6 c 4 2020-11-08 2020-11-09 0
任意演示日期
df <- structure(list(c_code = c("a","a","b","c","c"),session = c(1,2,3,4),date = structure(c(18262,18271,18281,18284,18573,18574),class = "Date"),toDate = structure(c(18575,18575,18575),class = "Date")),row.names = c(NA,-6L),class = c("tbl_df","tbl","data.frame"))```
,
未经测试,因为您尚未共享数据,但是我认为这是您想要的:
your_data %>%
group_by(c_code) %>%
mutate(
big_than_6 = case_when(
date < max(date) ~ NA_integer_,datediff(todayDate,date,"days") > 6 ~ 1L,TRUE ~ 0L
))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。