Hola. Tengo un archivo de texto con formato Ansi en Windows que lo quiero convertir en una serie temporal pero cuando lo trato de hacer con el siguiente comando: out <- read.zoo(readLines(con <- file("log2.log", encoding="UCS-2LE")),FUN = as.chron) Me da los siguientes errores: Error en file(file, "rt") : no se puede abrir la conexión Además: Mensajes de aviso perdidos 1: In file(file, "rt") : sólo fue usado el primer elemento del argumento 'description' 2: In file(file, "rt") : no fue posible abrir el archivo '#Software: Microsoft Internet Information Services 5.0': No such file or directory La primera línea del archivo contiene: #Software: Microsoft Internet Information Services 5.0 ¿Cual será la causa? Gracias, Sebastián.
Carlos: Cada línea está entre comillas y los valores están separados por espacios. Si hago: out <- read.table(file("log2.log", encoding="UCS-2LE"),sep="\n",comment="#") Me queda una sola variable, no las 14 que tendrían que aparecer. El día 7 de julio de 2010 10:38, Carlos Ortega <coforfe en gmail.com> escribió:> Hola, > ¿Por qué no utilizas directamente read.table? > El fichero de entrada tiene que tener una estructura determinada, es decir, > los campos han de estar separados por espacio, tab, coma, etc que puede ser > un argumento de read.table. > Y una vez leído el fichero, el campo que contenga la fecha, la conversión a > fecha es directa. > Saludos, > Carlos. > > 2010/7/7 Sebastian Kruk <residuo.solow en gmail.com> >> >> Hola. Tengo un archivo de texto con formato Ansi en Windows que lo >> quiero convertir en una serie temporal pero cuando lo trato de hacer >> con el siguiente comando: >> >> out <- read.zoo(readLines(con <- file("log2.log", >> encoding="UCS-2LE")),FUN = as.chron) >> >> Me da los siguientes errores: >> >> Error en file(file, "rt") : no se puede abrir la conexión >> Además: Mensajes de aviso perdidos >> 1: In file(file, "rt") : >> sólo fue usado el primer elemento del argumento 'description' >> 2: In file(file, "rt") : >> no fue posible abrir el archivo '#Software: Microsoft Internet >> Information Services 5.0': No such file or directory >> >> La primera línea del archivo contiene: >> >> #Software: Microsoft Internet Information Services 5.0 >> >> >> ¿Cual será la causa? >> >> Gracias, >> >> Sebastián. >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >
Hola, ¿qué tal? El primer argumento de read.zoo es el nombre del fichero que quieres leer. A read.zoo le estás pasando la salida de readLines, i.e., un vector de caracteres. R piensa que el primero es el nombre del fichero que quieres leer. ¿Por qué necesitas ir a través de readLines para leer tu serie temporal? ¿No puedes llamar a read.zoo directamente? Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 7 de julio de 2010 15:21, Sebastian Kruk <residuo.solow en gmail.com> escribió:> Hola. Tengo un archivo de texto con formato Ansi en Windows que lo > quiero convertir en una serie temporal pero cuando lo trato de hacer > con el siguiente comando: > > out <- read.zoo(readLines(con <- file("log2.log", > encoding="UCS-2LE")),FUN = as.chron) > > Me da los siguientes errores: > > Error en file(file, "rt") : no se puede abrir la conexión > Además: Mensajes de aviso perdidos > 1: In file(file, "rt") : > sólo fue usado el primer elemento del argumento 'description' > 2: In file(file, "rt") : > no fue posible abrir el archivo '#Software: Microsoft Internet > Information Services 5.0': No such file or directory > > La primera línea del archivo contiene: > > #Software: Microsoft Internet Information Services 5.0 > > > ¿Cual será la causa? > > Gracias, > > Sebastián. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Hola, El que te quede una sola variable por línea es porque estás indicando que el separador de campos "sep" es el retorno de carro "\n". Para que read.table considere como separador de campos los espacios hay que hacerlo así: sep="" Más detalles los puedes encontrar aquí: http://cran.r-project.org/doc/manuals/R-data.pdf Saludos, Carlos. www.qualityexcellence.es 2010/7/7 Sebastian Kruk <residuo.solow@gmail.com>> Carlos: > > Cada línea está entre comillas y los valores están separados por espacios. > > Si hago: > > out <- read.table(file("log2.log", > encoding="UCS-2LE"),sep="\n",comment="#") > > Me queda una sola variable, no las 14 que tendrían que aparecer. > > El día 7 de julio de 2010 10:38, Carlos Ortega <coforfe@gmail.com> > escribió: > > Hola, > > ¿Por qué no utilizas directamente read.table? > > El fichero de entrada tiene que tener una estructura determinada, es > decir, > > los campos han de estar separados por espacio, tab, coma, etc que puede > ser > > un argumento de read.table. > > Y una vez leído el fichero, el campo que contenga la fecha, la conversión > a > > fecha es directa. > > Saludos, > > Carlos. > > > > 2010/7/7 Sebastian Kruk <residuo.solow@gmail.com> > >> > >> Hola. Tengo un archivo de texto con formato Ansi en Windows que lo > >> quiero convertir en una serie temporal pero cuando lo trato de hacer > >> con el siguiente comando: > >> > >> out <- read.zoo(readLines(con <- file("log2.log", > >> encoding="UCS-2LE")),FUN = as.chron) > >> > >> Me da los siguientes errores: > >> > >> Error en file(file, "rt") : no se puede abrir la conexión > >> Además: Mensajes de aviso perdidos > >> 1: In file(file, "rt") : > >> sólo fue usado el primer elemento del argumento ''description'' > >> 2: In file(file, "rt") : > >> no fue posible abrir el archivo ''#Software: Microsoft Internet > >> Information Services 5.0'': No such file or directory > >> > >> La primera línea del archivo contiene: > >> > >> #Software: Microsoft Internet Information Services 5.0 > >> > >> > >> ¿Cual será la causa? > >> > >> Gracias, > >> > >> Sebastián. > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es@r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > >[[alternative HTML version deleted]]
> -----Mensaje original----- > De: r-help-es-bounces en r-project.org > [mailto:r-help-es-bounces en r-project.org] En nombre de Carlos Ortega > Enviado el: miércoles, 07 de julio de 2010 23:44 > Para: Sebastian Kruk > CC: r-help-es en r-project.org > Asunto: Re: [R-es] problema con file > > Hola, > > > El que te quede una sola variable por línea es porque estás > indicando que el separador de campos "sep" es el retorno de > carro "\n". Para que read.table considere como separador de > campos los espacios hay que hacerlo así: sep=""No debería ser sep=" " así? R. ____________________________________________________________________________________ Dr. Rubén Roa-Ureta AZTI - Tecnalia / Marine Research Unit Txatxarramendi Ugartea z/g 48395 Sukarrieta (Bizkaia) SPAIN
Sí, efectivamente, olvidé el espacio entre las comillas: "... *Separator* Normally looking at the file will determine the field separator to be used, but with whitespace separated files there may be a choice between the default sep = "" which uses any white space (spaces, tabs or newlines) as a separator, sep = " " and sep "\t". Note that the choice of separator affects the input of quoted strings. If you have a tab-delimited file containing empty fields be sure to use sep = "\t". ..." Saludos, Carlos. 2010/7/8 Rubén Roa <rroa@azti.es>> > -----Mensaje original----- > > De: r-help-es-bounces@r-project.org > > [mailto:r-help-es-bounces@r-project.org] En nombre de Carlos Ortega > > Enviado el: miércoles, 07 de julio de 2010 23:44 > > Para: Sebastian Kruk > > CC: r-help-es@r-project.org > > Asunto: Re: [R-es] problema con file > > > > Hola, > > > > > > El que te quede una sola variable por línea es porque estás > > indicando que el separador de campos "sep" es el retorno de > > carro "\n". Para que read.table considere como separador de > > campos los espacios hay que hacerlo así: sep="" > > No debería ser > > sep=" " > > así? > > R. > > > ____________________________________________________________________________________ > > Dr. Rubén Roa-Ureta > AZTI - Tecnalia / Marine Research Unit > Txatxarramendi Ugartea z/g > 48395 Sukarrieta (Bizkaia) > SPAIN > > > > >[[alternative HTML version deleted]]
Para hacerlo más rápido utilicé scan directamente: a <- scan(file(archivo,encoding="UCS-2LE"),comment.char="#", what = rep(c(rep("character",5),"numeric", rep("character",3), rep("numeric",4), rep("character",3)),200),quote = "", sep= " ",dec=".") Me queda un vector de 3200 valores en vez de una matriz de 16 variables y 200 ocurrecias. Además todos quedan de tipo "character". Saludos, Sebastián.
Hola, Claro, el comportamiento es correcto, porque scan devuelve un vector o una lista a diferencia de read.table. De la ayuda de scan: "... The value of ‘what’ can be a list of types, in which case ‘scan’ returns a list of vectors with the types given by the types of the elements in ‘what’. *This provides a way of* * reading columnar data. * ..." Destaco en negrita el propósito fundamental para el uso de scan, que creo que no es tu caso. ¿Nos podrías pasar el fichero de entrada o una parte de él para comprobar qué problemas hay para usar read.table?. Saludos, Carlos. 2010/7/8 Sebastian Kruk <residuo.solow@gmail.com>> Para hacerlo más rápido utilicé scan directamente: > > a <- scan(file(archivo,encoding="UCS-2LE"),comment.char="#", > what = rep(c(rep("character",5),"numeric", rep("character",3), > rep("numeric",4), rep("character",3)),200),quote = "", sep= " ",dec=".") > > Me queda un vector de 3200 valores en vez de una matriz de 16 > variables y 200 ocurrecias. Además todos quedan de tipo "character". > > Saludos, > > Sebastián. > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Justamente utilicé scan para utilizar menos recursos pues el archivo de texto puede llegar a ser muy grande. Si obtengo una lista integrada por 16 vectores correspondientes a las 16 variables me sería de mucha utilidad. El archivo de texto el la bitácora de un sitio web que funciona con Microsoft Internet Information Services 5.0, los campos que tiene son: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-bytes cs-bytes time-taken cs(User-Agent) cs(Cookie) cs(Referer), las primeras tres líneas son de comentarios, comienzan con # y cada línea corresponde a una observación, está entrecomillada y cada uno de los valores está separado por un espacio. Un ejemplo de línea sería: "2007-12-03 13:50:17 200.40.203.197 - 200.40.51.20 80 GET /localidades/img/nada.gif - 200 328 447 0 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322) ASPSESSIONIDSQCBSQAB=JOLECDCCBFCKPOFLGDLHMENA http://www.algo.com.uy/ventas/ventas.asp" Saludos, Sebastián. El día 9 de julio de 2010 09:17, Carlos Ortega <coforfe en gmail.com> escribió:> Hola, > Claro, el comportamiento es correcto, porque scan devuelve un vector o una > lista a diferencia de read.table. > De la ayuda de scan: > "... > The value of ?what? can be a list of types, in which case > ?scan? returns a list of vectors with the types given by the > types of the elements in ?what?. This provides a way of > reading columnar data. > ..." > Destaco en negrita el propósito fundamental para el uso de scan, que creo > que no es tu caso. > ¿Nos podrías pasar el fichero de entrada o una parte de él para comprobar > qué problemas hay para usar read.table?. > Saludos, > Carlos. > > 2010/7/8 Sebastian Kruk <residuo.solow en gmail.com> >> >> Para hacerlo más rápido utilicé scan directamente: >> >> a <- scan(file(archivo,encoding="UCS-2LE"),comment.char="#", >> what = rep(c(rep("character",5),"numeric", rep("character",3), >> rep("numeric",4), rep("character",3)),200),quote = "", sep= " ",dec=".") >> >> Me queda un vector de 3200 valores en vez de una matriz de 16 >> variables y 200 ocurrecias. Además todos quedan de tipo "character". >> >> Saludos, >> >> Sebastián. >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >
Hola, Funciona perfectamente con read.table... El ejemplo que se puede reproducir es el siguiente: #Creo un fichero ex.data con los datos de ejemplo zz <- file("ex.data", "w") # open an output file connection ejem.dat<-c("2007-12-03 13:50:17 200.40.203.197 - 200.40.51.20 80 GET /localidades/img/nada.gif - 200 328 447 0 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322) ASPSESSIONIDSQCBSQAB=JOLECDCCBFCKPOFLGDLHMENA http://www.algo.com.uy/ventas/ventas.asp") cat(ejem.dat, file = zz, sep = "\n") close(zz) #Cargo el fichero dat.in<-read.table("ex.data",header=F,sep=" ") #Veo resultados dat.in Y los resultados son estos:> dat.inV1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 1 2007-12-03 13:50:17 200.40.203.197 - 200.40.51.20 80 GET /localidades/img/nada.gif - 200 328 447 0 V14 1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322) V15 V16 1 ASPSESSIONIDSQCBSQAB=JOLECDCCBFCKPOFLGDLHMENA http://www.algo.com.uy/ventas/ventas.asp Efectivamente, para utilizar read.table tendrías que desprenderte de las filas que comienzan con "#". Saludos, Carlos. 2010/7/9 Sebastian Kruk <residuo.solow@gmail.com>> Justamente utilicé scan para utilizar menos recursos pues el archivo > de texto puede llegar a ser muy grande. Si obtengo una lista integrada > por 16 vectores correspondientes a las 16 variables me sería de mucha > utilidad. > > El archivo de texto el la bitácora de un sitio web que funciona con > Microsoft Internet Information Services 5.0, los campos que tiene son: > date time c-ip cs-username s-ip s-port cs-method cs-uri-stem > cs-uri-query sc-status sc-bytes cs-bytes time-taken cs(User-Agent) > cs(Cookie) cs(Referer), las primeras tres líneas son de comentarios, > comienzan con # y cada línea corresponde a una observación, está > entrecomillada y cada uno de los valores está separado por un espacio. > > Un ejemplo de línea sería: > > "2007-12-03 13:50:17 200.40.203.197 - 200.40.51.20 80 GET > /localidades/img/nada.gif - 200 328 447 0 > Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322) > ASPSESSIONIDSQCBSQAB=JOLECDCCBFCKPOFLGDLHMENA > http://www.algo.com.uy/ventas/ventas.asp" > > Saludos, > > Sebastián. > > El día 9 de julio de 2010 09:17, Carlos Ortega <coforfe@gmail.com> > escribió: > > Hola, > > Claro, el comportamiento es correcto, porque scan devuelve un vector o > una > > lista a diferencia de read.table. > > De la ayuda de scan: > > "... > > The value of ‘what’ can be a list of types, in which case > > ‘scan’ returns a list of vectors with the types given by the > > types of the elements in ‘what’. This provides a way of > > reading columnar data. > > ..." > > Destaco en negrita el propósito fundamental para el uso de scan, que creo > > que no es tu caso. > > ¿Nos podrías pasar el fichero de entrada o una parte de él para comprobar > > qué problemas hay para usar read.table?. > > Saludos, > > Carlos. > > > > 2010/7/8 Sebastian Kruk <residuo.solow@gmail.com> > >> > >> Para hacerlo más rápido utilicé scan directamente: > >> > >> a <- scan(file(archivo,encoding="UCS-2LE"),comment.char="#", > >> what = rep(c(rep("character",5),"numeric", rep("character",3), > >> rep("numeric",4), rep("character",3)),200),quote = "", sep= " ",dec=".") > >> > >> Me queda un vector de 3200 valores en vez de una matriz de 16 > >> variables y 200 ocurrecias. Además todos quedan de tipo "character". > >> > >> Saludos, > >> > >> Sebastián. > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es@r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > >[[alternative HTML version deleted]]