У меня есть кадр данных df1
, который суммирует глубины рыбы с течением времени. df1$Site
сообщает вам место, где рыба была, df1$Ind
сообщает вам человека, а df1$Depth
сообщает вам глубину, на которой рыба находилась в определенном df1$Datetime
.
С другой стороны, у меня есть df2
, который суммирует интенсивность течений во времени (КАЖДЫЕ ТРИ ЧАСА) от поверхности до глубины 39 метров с интервалами в 8 метров (m0-7
, m8-15
, * 1011). *, m24-31
и m32-39
). Как пример:
df1<-data.frame(Datetime=c("2016-08-01 15:34:07","2016-08-01 16:25:16","2016-08-01 17:29:16","2016-08-01 18:33:16","2016-08-01 20:54:16","2016-08-01 22:48:16"),Site=c("BD","HG","BD","BD","BD","BD"),Ind=c(16,17,19,16,17,16), Depth=c(5.3,24,36.4,42,NA,22.1))
df1$Datetime<-as.POSIXct(df1$Datetime, format="%Y-%m-%d %H:%M:%S",tz="UTC")
> df1
Datetime Site Ind Depth
1 2016-08-01 15:34:07 BD 16 5.3
2 2016-08-01 16:25:16 HG 17 24.0
3 2016-08-01 17:29:16 BD 19 36.4
4 2016-08-01 18:33:16 BD 16 42.0
5 2016-08-01 20:54:16 BD 17 NA
6 2016-08-01 22:48:16 BD 16 22.1
df2<-data.frame(Datetime=c("2016-08-01 12:00:00","2016-08-01 15:00:00","2016-08-01 18:00:00","2016-08-01 21:00:00","2016-08-02 00:00:00"), Site=c("BD","BD","BD","BD","BD"),var1=c(2.75,4,6.75,2.25,4.3),var2=c(3,4,4.75,3,2.1),var3=c(2.75,4,5.75,2.25,1.4),var4=c(3.25,3,6.5,2.75,3.4),var5=c(3,4,4.75,3,1.7))
df2$Datetime<-as.POSIXct(df2$Datetime, format="%Y-%m-%d %H:%M:%S",tz="UTC")
colnames(df2)<-c("Datetime","Site","m0-7","m8-15","m16-23","m24-31","m32-39")
> df2
Datetime Site m0-7 m8-15 m16-23 m24-31 m32-39
1 2016-08-01 12:00:00 BD 2.75 3.00 2.75 3.25 3.00
2 2016-08-01 15:00:00 BD 4.00 4.00 4.00 3.00 4.00
3 2016-08-01 18:00:00 BD 6.75 4.75 5.75 6.50 4.75
4 2016-08-01 21:00:00 BD 2.25 3.00 2.25 2.75 3.00
5 2016-08-02 00:00:00 BD 4.30 2.10 1.40 3.40 1.70
Я хочу создать в df1
новый столбец с именем df1$Current.Int
, который суммирует интенсивность тока на глубине, когда и где рыба находилась в соответствии с тем, что df2
говорит о течениях.
Я хотел бы получить это:
> df1
Datetime Site Ind Depth Current.Int
1 2016-08-01 15:34:07 BD 16 5.3 4.00
2 2016-08-01 16:25:16 HG 17 24.0 NA # Currents of this site are not included in df2
3 2016-08-01 17:29:16 BD 19 36.4 4.75
4 2016-08-01 18:33:16 BD 16 42.0 4.75
5 2016-08-01 20:54:16 BD 17 NA NA
6 2016-08-01 22:48:16 BD 16 22.1 1.40
Просто для того, чтобы указать, что поскольку текущие записи каждые три часа, каждый час, указанный в df2$Datetime
, означает на полтора часа больше и на полтора часа меньше. То есть сила тока, указанная в df2
при 21:00:00
, отражает токи между 19:30:00
и 22:30:00
. То же самое с остальными часами.
Кто-нибудь знает, как это сделать?