Usando dplyr :: mutate entre dois quadros de dados para criar coluna com base no período
No momento, tenho dois quadros de dados. Um contém mais de 11 milhões de linhas de uma data de início, data de término e outras variáveis. O segundo quadro de dados contém valores diários para graus-dia de aquecimento (basicamente uma medida de temperatura).
set.seed(1)
library(lubridate)
date.range <- ymd(paste(2008,3,1:31,sep="-"))
daily <- data.frame(date=date.range,value=runif(31,min=0,max=45))
intervals <- data.frame(start=daily$date[1:5],end=daily$date[c(6,9,15,24,31)])
Na realidade, meu dataframe diário tem todos os dias durante 9 anos e meus intervalos dataframe tem entradas que se estendem por datas arbitrárias nesse período. O que eu queria fazer era adicionar uma coluna ao meuintervals
dataframe chamadonhdd
que somaram os valores diários correspondentes a esse intervalo de tempo (término exclusivo).
Por exemplo, nesse caso, a primeira entrada desta nova coluna seria
sum(daily$value[1:5])
e o segundo seria
sum(daily$value[2:8]) and so on.
Eu tentei usar o seguinte código
intervals <- mutate(intervals,nhdd=sum(filter(daily,date>=start&date<end)$value))
Isso não está funcionando e acho que pode ter algo a ver com não fazer referência às colunas corretamente, mas não tenho certeza para onde ir.
Eu realmente gostaria de usardplyr
para resolver isso e não um loop, porque 11 milhões de linhas levarão tempo suficiente usando o dplyr. Eu tentei usar mais delubridate
mas o dplyr parece não suportar a classe Period.
Editar: estou usando datas deas.Date
agora em vez delubridate
mas a questão básica de como se referir a um dataframe diferente de dentromutate
Ainda está de pé