Как я могу рассчитать процентили в R следующих почасовых данных нескольких CSV?

Добрый день.

У меня следующая проблема:

У меня есть папка с 20 файлами .csv, которые содержат следующую информацию (прикрепленное изображение .csv, я передал текст в таблицу для лучшего просмотра):

introducir la descripción de la imagen aquí

Как вы увидите, у него есть почасовые данные о температуре для разных дней и месяцев, поэтому у меня много данных за одно и то же время.

То, что я хочу сделать, - это вычислить процентили 0,05, 0,5 и 0,95 для каждого часа в месяц, то есть группировать данные примерно так (я прилагаю совершенно другой файл .csv, но он имеет структуру, которая Я хочу получить в конце)

introducir la descripción de la imagen aquí

В результате я надеюсь получить 20 новых .csv, где столбцы месяц, час, процентиль отображаются 0,05 0,5 процентиль и 0,95 процентиль. То есть аналогично предыдущей структуре, но с колонками процентилей для каждого часа каждого месяца.

Я прилагаю код, который он нес, в случае, если он может служить руководством, базой или получать исправления. Очевидно, это не работает для меня, ха-ха.

1114 Я остаюсь внимательным и заранее благодарю вас.

library(tidyverse)
#Seleccionar directorio de trabajo

setwd("G:/IDEAM-2019-09-04/Recuentos/Estaciones Seleccionadas/TEMPS1NEW")
list.files(pattern='*.csv') %>%

  # Leemos cada csv en un único data.frame y la agrupación por archivo
  map_df(function(x) read_csv(x) %>% mutate(filename=gsub('.csv', '', basename(x)))) %>%

  #separación de los meses

  separate(event_time, into = c("fecha", "nodat"), sep = " ") %>%
  separate(fecha, into = c("año", "mes", "dia"), sep = "-") %>%

  # Genero los grupos para el cálculo de los percentiles .05, .5 y .95
  group_by(filename, mes,hora) %>%

  quantile(probs=seq(.05, .5, .95)) %>%


  group_by(filename) %>%
  # Dividimos el único data frame en cada estación met
  nest(-filename) %>%

  # Guardado de cada división en un nuevo .csv
  pwalk(function(filename, data) write.csv(data, 
                                           paste0(file.path("../Percentiles/TEMPS1/", filename), ".csv"),
                                           quote = TRUE,
                                           row.names = FALSE))

3
задан 27.11.2019, 18:09
1 ответ

У тебя есть какие-то проблемы в форме, в которой ты хочешь вычислить cuantiles:

  1. SegГєn я понимаю, ты ищешь cuantiles 0.05, 0.5 и.95, однако это не что estarГ-эксперт делая с seq(.05, .5, .95), так как он funciГіn ты estarГ - в производя sequencia от.05 до.5 в шаге.95, а именно результат, - первая стоимость (0.05), если cuantiles, что поиски - те, о которых я упоминаю наверху, ты просто показываешь их этой формы probs = c(.05, .5, .95).
  2. Другая проблема, которая уже ты mencionГі @mpaladino что не estГЎs показывая правильно, на котором данные ты сделаешь вычисление, asГ - как estГЎ, estarГ-эксперт перемещая data.frame завершил, я понимаю, что в действительности deberГ-схвати перемещать в любом случае колонну, на которой aplicarГЎs она funciГіn, я представляю, что его event_value
  3. , Но, aГєn решая это, есть проблема, в этом случае quantile() retornarГ - в три типа стоимости, когда в действительности, разгрузка estarГ - в ожидая одного. С чем, deberГ-схвати повторно формулировать эту funciГіn ademГЎs, что ты estarГ - в не будучи важная деталь, если твоя идея состоит в том, чтобы строить общее количество из-за каждой группы, необходимо использовать summarize(). Идея тогда podrГ, - чтобы быть чем-то asГ - (это пример)

    в. Строя новые колонны способствуя тому, чтобы quantile он возвратил стоимость в раз

    mtcars %>% 
        group_by(cyl) %>% 
        summarise(mean.05 = quantile(disp, probs = 0.05),
                  mean.5 = quantile(disp, probs = 0.5),
                  mean.95 = quantile(disp, probs = 0.95))
    

    b. Вычисляя три колонны одновременно

    mtcars %>% 
        group_by(cyl) %>% 
        do(data.frame(t(quantile(.$disp, probs = c(.05, .5, .95)))))
    
1
ответ дан 01.12.2019, 10:46

Теги

Похожие вопросы