如何使用R来确定日期变量是否与另一个日期变量+或_一个范围匹配



我有一个带有变量的数据帧,其中列出了每个人发生事件X的日期。该日期表示事件的第一天,该事件可以持续一定天数。我还有另一个变量Z,它也是一个日期。我想看看日期Z是否与日期X +潜在范围交叉,并创建一个新变量列表"交叉";和"No_Cross_Over".

下面的代码看起来是可行的,但是非常费力。有更快的方法吗?

df$NewVar <- ifelse(df$X == d1$Z | df$X == df$Z -2 | df$X == df$Z -1| df$X == df$Z +1| df$X == df$Z +2, "Cross_OVer", "No_Cross_Over")

您可以像下面这样做:

library(tidyverse)
# Made-up data
sample_data <- tribble(~x, ~range, ~z,
"2022-01-01", 2, "2022-01-02",
"2022-01-01", 3, "2022-01-10",
"2022-01-10", 10, "2022-01-15",
"2022-01-31", 5, "2022-02-02",
"2022-01-31", 3, "2022-02-04",
"2022-02-28", 2, "2022-03-01"
)|> 
mutate(across(c(x, z), as.Date))
# Actual code
sample_data |> 
mutate(cross = if_else(z >= x & z <= x + range, "Cross_Over", "No_Cross_Over"))
#> # A tibble: 6 × 4
#>   x          range z          cross        
#>   <date>     <dbl> <date>     <chr>        
#> 1 2022-01-01     2 2022-01-02 Cross_Over   
#> 2 2022-01-01     3 2022-01-10 No_Cross_Over
#> 3 2022-01-10    10 2022-01-15 Cross_Over   
#> 4 2022-01-31     5 2022-02-02 Cross_Over   
#> 5 2022-01-31     3 2022-02-04 No_Cross_Over
#> 6 2022-02-28     2 2022-03-01 Cross_Over

在2022-05-23由reprex包(v2.0.1)创建

相关内容

  • 没有找到相关文章

最新更新