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,posiciondelULTIMOcaracterdelnombredelmes))]
    
    # 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

Responder a