« Questions-r » : différence entre les versions

2 148 octets ajoutés ,  10 janvier 2022
Ligne 39 : Ligne 39 :
A une époque, ça s'appelait pas pivot_wider() et pivot_longer() mais spread() et gather()
A une époque, ça s'appelait pas pivot_wider() et pivot_longer() mais spread() et gather()
(mais c'était moins explicite comme nom)
(mais c'était moins explicite comme nom)
'''Question de martiste'''
J'arrive à aller chercher différents fichiers excel et à les "rbind" avec ça :
temp_data <- list.files(path_to_files, pattern = '*.xlsx') %>%
  purrr::map_dfr(~readxl::read_xlsx(paste0(path_to_files, .x)))
Maintenant, chaque fichier contient un champ "date"... Comment pourrais-je faire pour qu'au lieu de les ajouter à la suite les uns des autres, je les joignent par date ?
J'ai 15 fichiers excels, que, jusqu'ici, je lis à la suite et colle les uns après les autres. Ce qu'il me faudrait, à présent, c'est une sorte de 'recast' en fait, mais avec comme identifiant commun une variable lubridate. Pour qu'au lieux d'avoir une colonne qui m'indique le nom du site (= le nom du fichier en entrée) et une autre une valeur de température, je me retrouve avec un tableau 'large' avec comme nom de colonne chacune des stations contenant sa valeur de température.
'''Réponse de defuneste et sduneme'''
do.call et/ou pivot_wider [[https://tidyr.tidyverse.org/articles/pivot.html#wider]]
C'est qu'est ce que j'avais essayé au départ, mais ça n'marchait pas...
Parce que j'avais une variable 'id' qui empêchait le regroupement de se faire correctement
<syntaxhighlight lang="r">
df %>%
  select(timestamp, station, temperature) %>%
  pivot_wider(names_from=station, values_from=temperature)
</syntaxhighlight>
'''Solution non-purrr'''
Chargement des library / installation
<syntaxhighlight lang="r">
# install.packages("tidyverse")
# install.packages("readxl")
# les données sont dans un répertoire enfant:
file_path <- list.files(path = "data",
                        pattern = "*.xlsx",
                        full.names =  TRUE) # pas mal pour t'economiser un paste0
# une fonction qui lis un xlss
lis_un_fichier_excel <- function(un_chemin_de_fichier) {
                                  readxl::read_xlsx(un_chemin_de_fichier)
}
# on teste
lis_un_fichier_excel(file_path[1])
# une liste de df
une_liste_de_tableau <- lapply(file_path, "lis_un_fichier_excel")
# on ajoute les lignes
mon_tableau_en_tidy <- do.call("rbind", une_liste_de_tableau)
mon_tableau_en_tidy
</syntaxhighlight>


== Complétion des données d'une série temporelle ==
== Complétion des données d'une série temporelle ==
Utilisateur anonyme