Добрый день.
У меня следующая проблема:
У меня есть папка с 20 файлами .csv, которые содержат следующую информацию (прикрепленное изображение .csv, я передал текст в таблицу для лучшего просмотра):
Как вы увидите, у него есть почасовые данные о температуре для разных дней и месяцев, поэтому у меня много данных за одно и то же время.
То, что я хочу сделать, - это вычислить процентили 0,05, 0,5 и 0,95 для каждого часа в месяц, то есть группировать данные примерно так (я прилагаю совершенно другой файл .csv, но он имеет структуру, которая Я хочу получить в конце)
В результате я надеюсь получить 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))
У тебя есть какие-то проблемы в форме, в которой ты хочешь вычислить cuantiles:
seq(.05, .5, .95)
, так как он funciГіn ты estarГ - в производя sequencia от.05 до.5 в шаге.95, а именно результат, - первая стоимость (0.05), если cuantiles, что поиски - те, о которых я упоминаю наверху, ты просто показываешь их этой формы probs = c(.05, .5, .95)
. data.frame
завершил, я понимаю, что в действительности deberГ-схвати перемещать в любом случае колонну, на которой aplicarГЎs она funciГіn, я представляю, что его event_value
, Но, 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)))))