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.so...@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@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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es