mercredi 16 juin 2021

Mutate using ifelse with a condition in R

I want to create data frame for temperature

Time frame : 2020-01-01 ~ 2020-12-31
Temperature :
2020-01-01 ~ 2020-02-29 and 2020-10-01 ~ 2020-12-31 : random integer between 10 ~ 24
2020-03-01 ~ 2020-05-31 : random integer between 5 ~ 17
2020-06-01 ~ 2020-09-31 : random integer between 1 ~ 8

my code is

library(tidyverse)
library(lubridate)
library(summarytools)
library(dplyr)

start <- as.POSIXct("2020-01-01", "%Y-%m-%d", tz = "UTC")
end   <- as.POSIXct("2020-12-31", "%Y-%m-%d", tz = "UTC")

remT <- seq(start, end, by = "1 day") 
date_df <- as.data.frame(remT)
date_df <- setNames(date_df, c("Date")) 
date_df <- date_df %>% arrange(Date)

cond_1 <- for(i in date_df$Date){(i >= as.Date('2020-01-01') && i <= as.Date('2020-02-29')) || (i >= as.Date('2020-10-01') && i <= as.Date('2020-12-31'))}
cond_2 <- for(j in date_df$Date)(j >= as.Date('2020-06-01') && j <= as.Date('2020-09-30'))

x <- sample(10:24, 152, replace=TRUE)
y <- sample(1:8, 122, replace=TRUE)
z <- sample(5:17, 92, replace=TRUE)


date_df <- date_df %>%
  mutate(Test = 
           ifelse(cond_1, x,
                     ifelse(cond_2, y , z)
                  )
         )

However, this code returned the error message unfortunately

Error: Problem with mutate() column Test. ℹ Test = ifelse(cond_1, x, ifelse(cond_2, y, z)). ℹ Test must be size 366 or 1, not 0.

How to solve this error?

Aucun commentaire:

Enregistrer un commentaire