How can I add columns to a dataframe ( df1) from another dataframe (step2) in such a way
- DateTime in df1 grouped by eventStart and eventEnd of step2 is used the given eventid, temp_tot and dur values.
library(readr)
library(tidyverse)
id <- "1IGcTYs_gSMxyiwPAQ4dP8UHoey4agTc3"
df1=read_csv(paste0("https://docs.google.com/uc?id=",id,"&export=download"),
col_names = TRUE)
colnames(df1)=c("DateTime","rain")
step1 <- df1 %>%
mutate(rainflag = ifelse(rain > 0, 1, 0),
rainlength = rep(rle(rainflag)$lengths, rle(rainflag)$lengths),
eventflag = ifelse(rainflag == 1,1, ifelse(rainflag == 0 & rainlength < 25, 1,0 )),
eventflag = ifelse(row_number() < 25 & rainflag == 0, 0, eventflag),
eventid = rep(seq(1,length(rle(eventflag)$lengths)), rle(eventflag)$lengths))
step2 <- step1 %>%
filter(eventflag == 1) %>%
group_by(eventid) %>%
summarize(
temp_tot = sum(rain),
eventStart = first(DateTime),
eventEnd = last(DateTime)) %>%
mutate(dur = as.numeric(difftime(eventEnd,eventStart, units = 'hour'))+0.25,)
step2=step2 %>%
mutate(eventid=seq(1:nrow(step2)))
Expected outcome:
DateTime temp eventid temp_tot dur
<dttm> <dbl> <dbl> <dbl> <dbl>
1 1984-01-10 01:30:00 0 1 14.5 5.25
2 1984-01-10 01:45:00 0.254 1 14.5 5.25
3 1984-01-10 02:00:00 0.254 1 14.5 5.25
4 1984-01-10 02:15:00 0.254 1 14.5 5.25
5 1984-01-10 02:30:00 0.254 1 14.5 5.25
6 1984-01-10 02:45:00 0.762 1 14.5 5.25