[R-es] unir varios archivos .csv en una serie historica

Carlos Ortega cof en qualityexcellence.es
Mar Ago 8 22:59:47 CEST 2017


Hola,

Para la próxima vez...:

https://cloud.r-project.org/web/packages/easycsv/index.html

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 8 de agosto de 2017, 15:04, Sebastian Kruk <residuo.solow en gmail.com>
escribió:

> Hola Eric. Muchas gracias. Era exactamente lo que quería. Te agradezco
> mucho. Saludos, Sebastián.
>
> Enviado desde Correo para Windows 10
>
> De: eric
> Enviado: martes, 8 de agosto de 2017 8:25
> Para: Sebastian Kruk; Lista R
> Asunto: Re: [R-es] unir varios archivos .csv en una serie historica
>
> hola sebastian, invente 3 archivos con la estructura que describes y probe
> el codigo, le hice un par de arreglos necesarios, ahi va ... funciona bien
> con los archivos que te adjunto:
> # usando la libreria data.table
> library(data.table)
> setwd("/tu/directorio/con/los/datos/")
> filenames <- list.files(path = "/tu/directorio/con/los/datos/")
>   # creas un data.table que contendra TODOS los datos de tus archivos
> datos <- data.table()
>   # ciclo para leer cada archivo
> i<-1
> for (i in 1:length(filenames))
>     {
>     # 1. leer los datos de un unico archivo
>     data <- data.table()
>     data <- fread(filenames[i], header=TRUE)
>     # 2. transformar la estructura del archivo de filas con hora y
> columnas con dias a ( columna con dia, columna con hora y columna con
> precio )
>       # primero usar stack() ... suponiendo que tu primera columna de
> datos es la hora del dia y tiene encabezado "horas"
>     data.stacked <- data[,cbind(hora,stack(data, select=-hora))]
>     data.stacked <- as.data.table(data.stacked)
>     setnames(data.stacked,c("ind","values"),c("dia","precio"))
>     # 3. agregar la columna con el nombre del mes
>     data.stacked[, mes:=as.character(substr(filenames[i],1,3))]
>     # 4. uniendo los datos
>     datos <- rbind(datos,data.stacked)
>     i <- i+1
>     }
> espero que te sirva,
> suerte !!!!!!!!!!!
> eric.
>
>
>
> On 08/08/2017 06:50 AM, Sebastian Kruk wrote:
> Hola Eric. Me diste una muy buena orientación.
> Para algunos años los archivos son de excel donde cada uno tiene 12 hojas,
> una hoja por mes.
>
> Cada hoja tiene el siguiente formato:
>
> Hora 1 2 3 4 … 31
> 1 0 0 0 0 … 23
> 2 0 0 0 24 … 0
> 3 0 0 0 24,5 … 21
> 4 0 0 0 26 … 12
> ………………………
> 24 0 0 0 0 … 0
>
> Por ejemplo en el día 1 el precio en las horas 1, 2, 3, 4 y 24 es 0, en
> cambio el día 31 el precio a la hora 1 es 23, a las 2 es 0, a las 3 es 21,
> a las 4 es 12 y a las 24 es 0.
>
> Espero no haberlos confundido más.
>
> Gracias,
>
> Sebastián.
>
> Enviado desde mi teléfono con Windows 10
>
> De: eric
> Enviado: martes, 8 de agosto de 2017 6:52
> Para: Sebastian Kruk; Lista R
> Asunto: Re: [R-es] unir varios archivos .csv en una serie historica
>
> Hola sebastian, sin el archivo de datos para probar y ver la estructura de
> los datos es un poco dificil, pero haciendo algunas suposiciones imagino
> que algo como esto te puede ayudar, seguro tendras que hacer ajustes:
> # usando la libreria data.table
> library(data.table)
> filenames <- list.files(path = "/tu/path")
>   # creas un data.table que contendra TODOS los datos de tus archivos
> datos <- data.table()
>   # ciclo para leer cada archivo
> i<-1
> for (i in 1:length(filenames))
>     {
>     # 0. crear un data.table para contener los datos de tu archivo de
> forma temporal dentro del ciclo
>         data <- data.table()
>     # 1. leer los datos de un unico archivo
>     data <- as.data.table(fread(filenames[i], header=TRUE))
>
>     # 2. transformar la estructura del archivo de filas con hora y
> columnas con dias a ( columna con dia, columna con hora y columna con
> precio )
>       # primero usar stack() ... suponiendo que tu primera columna de
> datos es la hora del dia y tiene encabezado "horas"
>     data.stacked <- data[,cbind(horas,stack(data, select=-horas))]
>     data.stacked <- as.data.table(data.stacked)
>
>     # 3. agregar la columna con el nombre del mes
>     data.stacked[, mes:=as.character(substr(filenames[i],
> posiciondelPRIMERcaracterdelnombredelmes,posiciondelULTIMOcaracterdelno
> mbredelmes))]
>
>     # 4. uniendo los datos
>     datos <- rbind(datos,data)
>     i <- i+1
>     }
> Ojala te sirva,
> Suerte !!!!!!!!!!!!
> Eric.
>
>
>
> On 08/07/2017 06:17 PM, Sebastian Kruk wrote:
> Estimados usuarios-R:
>
> Muy buenas noches.
>
> Tengo una serie de archivos csv que contienen los precios mayoristas de
> electricidad por hora.
>
> Cada archivo csv corresponde a un mes de un cierto año.
>
> Cada columna corresponde a un día del mes y cada fila a una hora del día (1
> a 24 horas).
>
> ¿Hay alguna forma rápida de importar todos los datos y formar un vector
> columna en que cada observación corresponde al precio que se dio en cierta
> hora en cierto dia en cierto mes en cierto año?
>
> Desde ya muchas gracias,
>
> Sebastián.
>
>   [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
>
> --
> Forest Engineer
> Master in Environmental and Natural Resource Economics
> Ph.D. student in Sciences of Natural Resources at La Frontera University
> Member in AguaDeTemu2030, citizen movement for Temuco with green city
> standards for living
>
> Nota: Las tildes se han omitido para asegurar compatibilidad con algunos
> lectores de correo.
>
>
>
> --
> Forest Engineer
> Master in Environmental and Natural Resource Economics
> Ph.D. student in Sciences of Natural Resources at La Frontera University
> Member in AguaDeTemu2030, citizen movement for Temuco with green city
> standards for living
>
> Nota: Las tildes se han omitido para asegurar compatibilidad con algunos
> lectores de correo.
>
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es