Я хотел бы присвоить значения из gdd $ GDDValue для модели $ GDD.
Я хотел бы назначать значения только тогда, когда gdd $ DateGDD == модель $ DateGDD.
Значения, которые можно назначить из gdd $ GDDValue, должны удовлетворять условиям:
Temp <- '5'
Date0 <- '2017-09-10' #(RRRR-MM-DD)
IdStation <- '12230'
Мои таблицы:
gdd:
Temp Date0 DateGDD IdStation GDDValue
1 3 2017-08-15 2018-04-08 12330 1280.0
2 3 2017-08-15 2018-04-08 12230 1151.4
3 3 2017-08-15 2018-04-08 12345 1205.2
4 5 2017-08-15 2018-04-08 12330 1119.9
... ... ... ... ... ...
> unique(gdd$Temp)
[1] 3 5 10
> unique(gdd$Date0)
[1] "2017-08-15" "2017-08-25" "2017-09-01" "2017-09-10" "2017-09-20" "2017-09-30" "2017-10-10"
> unique(gdd$DateGDD)
[1] "2018-04-08" "2018-04-11" "2018-04-14" "2018-04-18" "2018-04-19" "2018-04-21" "2018-04-28" "2018-05-20" "2018-06-16"
[10] "2018-07-07"
> unique(gdd$IdStation)
[1] 12330 12230 12345
модель:
Id DateT DateGDD Date0 GDD ...
1 N0254_1 2018-04-10 2018-04-11 2017-09-10
2 N0254_2 2018-04-10 2018-04-11 2017-09-10
3 N0254_3 2018-04-10 2018-04-11 2017-09-10
4 N0254_4 2018-04-10 2018-04-11 2017-09-10
... ... ... ... ... ... ...
> unique(model$DataT)
[1] "2018-04-10" "2018-04-09" "2018-04-12"
> unique(model$DateGDD)
[1] "2018-04-11" "2018-04-14"
> unique(model$Date0)
[1] "2017-09-10"
У меня было бы два уникальных значения в модели $ GDD, потому что только две даты перекрываются в обеих таблицах.
Одно значение для 2018-04-11, другое для 2018-04-14. Эти значения должны заполнять весь столбец GDD модели.
Я использую этот код, но он работает некорректно.
for(x in 1:nrow(model)){
DateA <- model$DateGDD
GddAssign <- gdd[which((gdd$DateGDD==DateA)&(gdd$IdStation==IdStation)&(gdd$Temp==Temp)&(gdd$Date0==Date0)),GDDValue]
if (length(GddAssign)==0) {
model$GDD <- NaN
} else {
model$GDD <- GddAssign
}
}
Результат кода: Значения были назначены на модель $ GDD, но не полностью. Кроме того, эти значения не включают в себя условие gdd $ DateGDD == model $ DateGDD, которому они должны соответствовать.