在某些日期之间替换 R data.frame 的值?

Replace values of an R data.frame between certain Dates?

我有以下 data.frame,并希望将 2001 年 Flowreplace 值设为 -1。如有任何帮助,我们将不胜感激。

library(lubridate)
library(tidyverse)

set.seed(123)

DF <- data.frame(Date = seq(as.Date("2001-01-01"), to = as.Date("2005-12-31"), by = "day"),
                       Flow = runif(1826,1,5))

从'Date'列中提取year,检查它是否等于2001,并替换为-1

library(lubridate)
library(dplyr)
DF <- DF %>% 
   mutate(Flow = replace(Flow, year(Date) == 2001, -1))

或使用 base R - 通过 format 的标准使用获取 'Year' 部分,并使用“2001”进行检查以创建逻辑向量并分配那些 'Flow' 元素到 -1

DF$Flow[format(DF$Date, '%Y') %in% '2001'] <- -1

基础 R 选项 -

使用grepl/grep查找以2001开头的行,并将Flow值更改为-1。

DF$Flow[grep('^2001', DF$Date)] <- -1
DF