format.R 2.76 KB
Newer Older
Heraut Louis's avatar
Heraut Louis committed
library(dplyr)

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"))
Heraut Louis's avatar
Heraut Louis committed

        # 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"))
Heraut Louis's avatar
Heraut Louis committed

    } 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')
    }
    
Heraut Louis's avatar
Heraut Louis committed
    return (list(data=df_data, info=df_info))
}


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)
    return (list(data=data, info=info))
}
reprepare = function(df_dataEx, df_list, colnamegroup=NULL) {
    colnames(df_dataEx) = c('Date', 'group', 'Qm3s')

    df_dataEx$Date = as.character(df_dataEx$Date)
    exDate = df_dataEx$Date[1]
    nbt = lengths(regmatches(exDate, gregexpr('-', exDate)))
    
    if (nbt == 1) {
         df_dataEx$Date = paste(df_dataEx$Date, '01', sep='-')
    } else if (nbt == 0) {
         df_dataEx$Date = paste(df_dataEx$Date, '01', '01', sep='-')
    } else if (nbt != 2) {
        stop('erreur of date format')
    }

    df_dataEx = bind_cols(Date=as.Date(df_dataEx$Date,
                                       format="%Y-%m-%d"),
                          df_dataEx[-1],
                          df_list$info[df_dataEx$group,
                                       2:ncol(df_list$info)])

    df_listEx = prepare(df_dataEx, colnamegroup=colnamegroup)
    return (df_listEx)
clean = function (df_xTrend, df_list) {

    df_xTrend = bind_cols(df_xTrend,
                          df_list$info[df_xTrend$group1,
                                       2:ncol(df_list$info)])
Heraut Louis's avatar
Heraut Louis committed

    colnames(df_xTrend)[1] = 'group'
Heraut Louis's avatar
Heraut Louis committed

    return (df_xTrend)
}