Проблема R: поиск значений даты из вектора в другом фрейме данных с количеством осадков, добавление общего количества осадков с определенных дат в общее количество

У меня есть вектор, заполненный датами.

Даты ‹- c (10.14.1997, 10.20.1997, 30.10.1997, т.д., т.д.)

У меня есть датафрейм с датами и количеством осадков на каждую дату.

Date Rainfall
10/10/1997 10
11/10/1997 0.2
12/10/1997 0
13/10/1997 1
14/10/1997 1

Для каждой даты в векторе:

Мне нужно найти ту же дату в кадре данных, затем добавить количество осадков для даты вектора и за 4 дня до даты в векторе.

Например. для векторной даты 10.14.1997 я бы сложил: 1+1+0+0,2+10=12,2

Затем мне нужно добавить это во фрейм данных, например:

Date 5 day Rainfall
14/10/1997 12.2

У кого-нибудь есть идеи, как это закодировать? Я новичок в R и не уверен.


person Boromiri    schedule 22.02.2021    source источник


Ответы (1)


Измените даты в векторе и кадре данных на класс Date. Предполагая, что кадр данных называется df, вы можете создать последовательность Dates и Dates - 4, найти даты в соответствующем диапазоне в df и sum их значение Rainfall.

Dates <- c("14/10/1997", "20/10/1997", "30/10/1997")
Dates <- as.Date(Dates, '%d/%m/%Y')
df$Date <- as.Date(df$Date, '%d/%m/%Y')

result <- do.call(rbind, Map(function(x, y) data.frame(Date = x, 
              five_day_rain = sum(df$Rainfall[df$Date %in% x:y], na.rm = TRUE)), 
              Dates, Dates - 4))
result
person Ronak Shah    schedule 22.02.2021