如何解决如果我有相同的行,如何不计算 datediff
我在 dplyr 中遇到 R 问题。我计算日期之间的 diffdate 并创建新列,但我想在状态下的一行(行 +1)相同时省略。它应该是 NA 或 0。
serial status date days days2
312313124 Good Stock 20/01/2021 0 0
312313124 Under Assessment 29/01/2021 9 9
312313124 In Repair 03/02/2021 4 4
312313124 Under Assessment 06/02/2021 3 3 <- is correct,because between status: Under is other status
70453423040 Under Assessment 18/03/2021 0 0
70453423040 In Repair 25/03/2021 7 0
70453423040 In Repair 28/03/2021 3 0 <- should be NA or 0,because in the same serial,status before (1 line above) is the same
12131231 Good Stock 03/04/2021 6
我尝试根据我的数据重新组合,但不起作用。我使用此代码。:
df2 <- df %>%
distinct() %>%
group_by(Serial) %>%
mutate(Days = c(NA,as.numeric(diff(Exported),units='days'))) %>%
ungroup() %>%
group_by(Serial,Status,Date) %>%
mutate(Days2 = if_else(row_number() > 1,NA,Days)) %>%
ungroup()
我也尝试过,但是当我有重复时,即使记录之间的差异大于 2,此代码也会显示我。
df3<- df%>%
group_by(Serial,Status) %>%
mutate(Days2 = +duplicated((paste(Serial,Status)))
解决方法
您应该可以使用 lag
/ lead
执行此操作。类似于以下内容:
df2 <- df %>%
distinct() %>%
group_by(Serial) %>%
mutate(next_date = lead(date,1,order_by = date),next_status = lead(status,order_by = date)) %>%
mutate(Days2 = ifelse(status != next_status,next_date - date,0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。