Newer
Older
join = function (df_data_BH, df_data_NV, df_info_BH, df_info_NV) {
if (!is.null(df_data_NV) & !is.null(df_data_BH)) {
# Get the station in common
common = levels(factor(df_info_NV[df_info_NV$code %in% df_info_BH$code,]$code))
# Get the Nv station to add
NVadd = levels(factor(df_info_NV[!(df_info_NV$code %in% df_info_BH$code),]$code))
# Select only the NV info to add
df_info_NVadd = df_info_NV[df_info_NV$code %in% NVadd,]
# Join NV data to BH data
df_info = full_join(df_info_BH, df_info_NVadd, by=c("code", "nom", "L93X", "L93Y", "surface_km2", "file_path"))
# Select only the NV data to add
df_data_NVadd = df_data_NV[df_data_NV$code %in% NVadd,]
# Join NV info to BH info
df_data = full_join(df_data_BH, df_data_NVadd, by=c("Date", "Qm3s", "code"))
} else if (is.null(df_data_NV) & !is.null(df_data_BH)) {
df_info = df_info_BH
df_data = df_data_BH
} else if (!is.null(df_data_NV) & is.null(df_data_BH)) {
df_info = df_info_NV
df_data = df_data_NV
} else {
stop('No data')
}
prepare = function(df_data, colnamegroup=NULL) {
colnamegroup = c(colnamegroup)
colindgroup = which(colnames(df_data) == colnamegroup)
df_data = group_by_at(df_data, colindgroup)
data = tibble(Date=df_data$Date,
group=group_indices(df_data),
Qm3s=df_data$Qm3s)
Gkey = group_keys(df_data)
info = bind_cols(group=seq(1:nrow(Gkey)),
Gkey)
reprepare = function(df_XEx, df_Xlist, colnamegroup=NULL) {
df_XEx$Date = as.character(df_XEx$Date)
exDate = df_XEx$Date[1]
nbt = lengths(regmatches(exDate, gregexpr('-', exDate)))
if (nbt == 1) {
df_XEx$Date = paste(df_XEx$Date, '01', sep='-')
df_XEx$Date = paste(df_XEx$Date, '01', '01', sep='-')
} else if (nbt != 2) {
stop('erreur of date format')
}
df_XEx[-1],
df_Xlist$info[df_XEx$group,
2:ncol(df_Xlist$info)])
df_XlistEx = prepare(df_XEx, colnamegroup=colnamegroup)
return (df_XlistEx)
clean = function (df_Xtrend, df_XEx, df_Xlist) {
df_Xlist = reprepare(df_XEx, df_Xlist, colnamegroup=c('code'))
df_Xtrend = bind_cols(df_Xtrend,
df_Xlist$info[df_Xtrend$group1,
2:ncol(df_Xlist$info)])
colnames(df_Xtrend)[1] = 'group'
intercept = get_intercept(df_Xtrend, df_Xlist, unit2day=365.25)
df_Xtrend$intercept = intercept
df_Xtrend = relocate(df_Xtrend, intercept, .after=trend)
return (list(trend=df_Xtrend, data=df_Xlist$data, info=df_Xlist$info))