【发布时间】:2021-12-05 17:59:07
【问题描述】:
我有一个数据框和一个向量,我想与我的数据框的一列进行比较,以根据满足条件的值分配组,问题是这些值是动态的,所以我需要一个代码考虑到这个向量可以采用的不同长度
这是我的数据框的最小可重现示例
value <- c(rnorm(39, 5, 2))
Date <- seq(as.POSIXct('2021-01-18'), as.POSIXct('2021-10-15'), by = "7 days")
df <- data.frame(Date, value)
这是我必须与数据框的日期进行比较的向量
dates_tour <- as.POSIXct(c('2021-01-18', '2021-05-18', '2021-08-18', '2021-10-15'))
这将创建所需的输出
df <- df %>% mutate(tour = case_when(Date >= dates_tour[1] & Date <= dates_tour[2] ~ 1,
Date > dates_tour[2] & Date <= dates_tour[3]~2,
Date > dates_tour[3] & Date <= dates_tour[4]~3))
但是,我不想那样做,因为这个项目需要经常更新,而变量dates_tour 的长度会发生变化
所以我想在创建游览变量时考虑到这一点
我尝试这样做:但它不起作用
for (i in 1:length(dates_tour)) {
df <- df %>% mutate(tour = case_when(Date >= dates_tour[i] & Date <= dates_tour[i+1] ~ i))
}
【问题讨论】: