【问题标题】:Replace values of an R data.frame between certain Dates?在某些日期之间替换 R data.frame 的值?
【发布时间】:2021-09-22 22:38:47
【问题描述】:

我有以下 data.frame 并希望 replace 在 2001 年将 Flow 的值设置为 -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))

【问题讨论】:

    标签: r dataframe replace tidyverse lubridate


    【解决方案1】:

    从“日期”列中提取year,检查是否等于2001,并替换为-1

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

    或使用base R - 通过标准使用format 获取“年份”部分并使用“2001”进行检查以创建逻辑向量并将这些“流”元素分配给-1

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

    【讨论】:

      【解决方案2】:

      基础 R 选项 -

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-07
        • 1970-01-01
        相关资源
        最近更新 更多