Skip to content

[R-es] Leer archivos con read.csv

7 messages · WILMER CONTRERAS SEPULVEDA, Javier Nieto, Freddy Omar López Quintero +3 more

#
Buen día para todos.

Tengo un pequeño problema en el quisiera que me colaboraran.

Estos días estoy trabajando en la lectura de una gran cantidad de archivos
de extención .csv, se trata de una lista de documentos de 11 estaciones
meteorologicas. Cada estación esta clasificada por meses y cada mes por
dias, asi que tengo un archivo cada día. Por ejemplo tengo un archivo .csv
para el día uno del mes de enero, otro archivo para el día dos del mes de
enero, otro para el día tres del mes de enero y así sucesivamente hasta
completar todos los meses.

Mi problema es, que hay algunos archivos faltantes. Me refiero a que por
ejemplo el día 5 del mes de febrero hace falta.

Al tratar de leer los archivos FALTANTES con read.csv() me arroja el
siguiente error:

Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'C:/R/Zonas rurales/Corponor/2017/7. PUNTO DE
CONTROL/Febrero/27-02-2017.csv': No such file or directory

Lo que es logico, debido a que no estan.

Sin embargo al arrojarme este error se rompe el ciclo for y no me permite
continuar trabajando.

Mi pregunta es:

*¿Existe alguna forma de indicarle al comando read.csv() que evite los
archivos faltantes? *

Muchas Gracias de antemano.

*Wilmer Contreras Sepulveda.*
#
Hola, no he visto tu código pero puedes utilizar la función try.


Saludos
#
Hola.

Una manera puede ser tomar una lista de todos los archivos de un directorio
y trabajar con ellos, puesto que ciertamente existen. ¿Cómo? Supongamos que
tienes una carpeta llena de archivos csv. Entonces, puedes guardar el
nombre de tus archivos en un objeto con

lista_archivos<-dir()
y esto te dará todos los csv de esa carpeta (si tienes otros archivos
también estarán allí, pero insistamos por ahora en suponer que son solo
csvs...).

Luego puedes hacer algo como

read.csv(lista_archivos[s])
dentro del bucle que ya estabas utilizando, para s entre 1 y el tamaño de
lista_archivos.

Finalmente, si en tu carpeta no hay solo csvs sino otros archivos, puedes
usar alguna variante de

grepl('.csv', lista_archivos[s])
para quedarte solo con aquellos archivos que cumplan con ser csv, por
ejemplo. Esto ya depende mucho de la entropía que haya en tus carpetas jeje.

Ojala sirva.

¡Salud!

2017-07-13 13:18 GMT-04:00 Javier Nieto <mac_javi en hotmail.com>:

  
    
#
Estimado Freddy Omar López Quintero

La idea de Javier Nieto me parece buena, try cath es muy útil, a esto le sumaría print, como para ver en pantalla el nombre del archivo y un Si o No, mientras se cargan los datos, aunque esto es solo gusto personal.

Javier Rubén Marcuzzi

De: Freddy Omar López Quintero
Enviado: jueves, 13 de julio de 2017 15:47
Para: Javier Nieto
CC: r-help-es en r-project.org
Asunto: Re: [R-es] Leer archivos con read.csv

Hola.

Una manera puede ser tomar una lista de todos los archivos de un directorio
y trabajar con ellos, puesto que ciertamente existen. ¿Cómo? Supongamos que
tienes una carpeta llena de archivos csv. Entonces, puedes guardar el
nombre de tus archivos en un objeto con

lista_archivos<-dir()
y esto te dará todos los csv de esa carpeta (si tienes otros archivos
también estarán allí, pero insistamos por ahora en suponer que son solo
csvs...).

Luego puedes hacer algo como

read.csv(lista_archivos[s])
dentro del bucle que ya estabas utilizando, para s entre 1 y el tamaño de
lista_archivos.

Finalmente, si en tu carpeta no hay solo csvs sino otros archivos, puedes
usar alguna variante de

grepl('.csv', lista_archivos[s])
para quedarte solo con aquellos archivos que cumplan con ser csv, por
ejemplo. Esto ya depende mucho de la entropía que haya en tus carpetas jeje.

Ojala sirva.

¡Salud!

2017-07-13 13:18 GMT-04:00 Javier Nieto <mac_javi en hotmail.com>:

  
    
#
?De eso se trata ¿no?: que la persona que consulta obtenga una o varias
respuestas con posibles soluciones para que pueda experimentar con ellas y
adecuarlas a su situación.?


Saludos.
3 days later
#
Buenos días,
Como te han comentado anteriormente, creo que es más conveniente listar
directamente los archivos y leerlos todos a la vez. A mi se me presento una
situación similar hace un tiempo y lo resolví así:

library(dplyr)

# Importacion de los ficheros

df.a <-
  list.files("./data/", full.names = T, pattern = "nombre\\.csv")
df.a <- lapply(df.a, read.csv2, stringsAsFactors = F)
df.a <- bind_rows(df.a)


Como ves el directorio desde el cual leía los fichero tenía otros archivos
y por tanto selecciono solo los que cumplen con un patrón.
Espero que te sirva.


Saludos.

El 14 de julio de 2017, 13:51, eric <ericconchamunoz en gmail.com> escribió: