Я готовлю данные для линейной регрессии и хочу исправить отсутствующие значения (NA), используя самый длинный непрерывный отрезок значений, отличных от NA, в данном году и на данном участке.
Я пробовал na.contiguous (), но мой код не применяет функцию по годам или по сайту
Спасибо за вашу помощь
Тестовые данные представляют собой многомерный временной ряд который охватывает 2 года и 2 сайта. Я надеюсь, что решение будет работать с данными за много лет и 32 сайта, поэтому некоторый уровень автоматизации и qa / q c приветствуются.
library(dataRetrieval)
library(dplyr)
# read in Data, q is discharge and wt is stream temperature
wt<-readNWISdv(siteNumbers=c("08181800","07308500"),
parameterCd=c("00010","00060"), statCd=c("00003"),
startDate="1998-07-01", endDate="1999-09-30" )
dfwt<-wt%>%
group_by(site_no)%>%
select(Date,site_no,X_00010_00003,X_00060_00003)%>%
rename(wt=X_00010_00003,q=X_00060_00003)
#Subset summer season, add dummy air temp (at).
dfwt$Date<-ymd(dfwt$Date, tz=Sys.timezone())
dfwt$month<-month(dfwt$Date)
dfwt$year<-year(dfwt$Date)
df<- dfwt %>%
group_by(site_no)%>%
subset(month>=7 & month<=9)%>%
mutate(at=wt*1.3)
# add NA
df[35:38,3]<-NA
df[155,3]<-NA
df[194,3]<-NA
test<-df%>%
group_by(site_no, year)%>%
na.contiguous(df)