Questions-r

De Wiki ISIG
Révision datée du 10 janvier 2022 à 17:33 par Lvaudor (discussion | contributions) (ajouts de convs questions-r)
Aller à la navigation Aller à la recherche

Cette page reprend la "substantifique moelle" des échanges ayant eu lieu sur le channel questions-r du Discord d'ISIG.

Manipulation d'un nom de fichier

Question posée par martiste

Comment récupérer un morceau du nom du fichier ? Par exemple à partir de "zarsqdfqsfd33vezre20618402.csv on veut récupérer 20618402.

Réponse de lvaudor et sdunesme

Combi des expressions régulières et de la fonction basename():

"za/rsqd/fqsfd33vezre20618402.csv" %>%
  basename() %>% # donne "fqsfd33vezre20618402.csv"
  stringr::str_replace(".csv","") %>% # donne "fqsfd33vezre20618402"
  stringr::str_extract(pattern=".{8}(?=\\.$)") # donne "20618402"

Reformattage d'un fichier en "longueur"

Question de mcottet

J'ai une bdd avec plusieurs variables catégorielles qui portent une info similaire (est ce que les gens ont vu l'espèce A un peu, bcp, passionnément, à la folie ; idem pour l'espèce B, C...). Et j'aimerais faire une somme pour savoir combien de fois l'individu 1 a répondu un peu à l'ensemble des espèces proposées, bcp à l'ensemble des espèces... il y a 18 espèces (donc 18 variables)

Réponse de lvaudor

tidyr::pivot_longer()

Dans ta version de BDD, tu as 18 variables différentes Mais en fait, tu pourrais considérer que ces 18 colonnes correspondent en fait à 2 colonnes (une colonne "espece" et une colonne "valeur") Tu cherches de ce fait à répéter l'ensemble des autres colonnes (toutes celles qui ne font pas partie des 18 sus-mentionnées) 18 fois, mais "en hauteur". Du coup, ton tableau qui est "plutôt large" devient un tableau "plutôt long"

Dans l'appel à la fonction, tu précises quelles sont les variables que tu récupères pour les mettre "en long" et toutes les autres, il les répète à l'identique autant de fois que nécessaire

A une époque, ça s'appelait pas pivot_wider() et pivot_longer() mais spread() et gather() (mais c'était moins explicite comme nom)

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

Question de Théo

j'ai une série temporelle de hauteurs d'eau à pas de temps 15 min, mais il y a plein de trous dedans et je voudrais la compléter, en ajoutant l'heure manquante, et la hauteur d'eau manquante (moyenne de t-15 et t+15 si t est la valeur manquante).

Réponse de martiste

il faut que tu commences par te créer un index de temps à l'intervalle voulu, depuis ta première valeur jusqu'à la dernière, à laquelle tu joins ton jeu de données réel. Les trous vont alors apparaître en 'NA'. Et si tu n'as que quelques trous de jamais plus de 2 intervalles, tu peux utiliser la fonction zoo::na_approx() qui fera l'affaire...

library(dplyr)
H_15_raw = readr::read_delim("H_15MIN_SB_CSV.csv", delim = ";") %>% 
  mutate(Date = lubridate::dmy_hm(Date))

timestamp = seq(from = min(H_15_raw$Date), to = max(H_15_raw$Date), by = "15 min") %>% 
  as_tibble() %>% 
  select(Date = value)

H_15_corr =
  left_join(timestamp, H_15_raw, by ="Date") %>% 
  mutate(H_CM_SB_BH = zoo::na.approx(H_CM_SB_BH))

Regarde ?na.approx pour plus de détails sur son fonctionnement

Annonces de nouveau packages R

banqueHydro

[[1]]

Pour "scraper" les données du site banqueHydro (en attendant l'API Hubeau [[2]]).

Annonces de formations/tutos/conf

supports SIGR [[3]] par defuneste