[R-es] determinar el ancho de columnas
MARCELINO DE LA CRUZ ROT
marcelino.delacruz en upm.es
Sab Feb 23 11:42:22 CET 2013
Y si en vez de sep=" " pones sep="" no hay que hacer el procesado de
los NA:
> (datos= scan(file="ejemplo.txt" , sep=""))
Read 33 items
[1] 5.005e+04 9.000e+00 1.576e-02 2.021e-01 3.830e-03 1.846e-01
4.018e-03 8.251e-04
[9] 8.805e-02 8.347e-03 1.028e+00 5.010e+04 9.000e+00 1.417e-02
3.379e-01 3.223e-03
[17] 8.510e-02 4.129e-03 3.190e-03 8.401e-02 9.298e-03 9.365e-01
5.015e+04 9.000e+00
[25] 1.357e-02 3.061e-01 3.747e-03 1.077e-01 3.989e-03 4.462e-03
8.564e-02 9.126e-03
[33] 9.451e-01
> (datos=as.data.frame(matrix(datos,nc=11, byrow=T)[,-c(1,2)]))
V1 V2 V3 V4 V5 V6 V7 V8
V9
1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347
1.0280
2 0.01417 0.3379 0.003223 0.0851 0.004129 0.0031900 0.08401 0.009298
0.9365
3 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126
0.9451
Saludos,
Marcelino
El 2013-02-22 22:35, Fernando Macedo escribió:
> Con algunas modificaciones el código de Marcelino funciona
> correctamente:
>
> ##########################################################3
>
> datos= scan(file="ejemplo.txt" , sep=" ")
> datos.pre=subset(datos, is.na [7](datos)==F)
> datos.fin= as.data.frame(matrix(datos.pre, nc=11, byrow=T)[,-c(1:2)])
> head(datos.fin)
>
> #################################################
>
> Adjunto un ejemplo de archivo tal cual sale del software usado.
>
> Saludos
>
> Fernando
>
> El 22 de febrero de 2013 18:32, Fernando Macedo <fermace en gmail.com>
> escribió:
>
>> Reenvío porque no había mandado a toda la lista.
>>
>> Buenas, estoy acá con Rodrigo, puesto que somos colegas aunque
>> trabajemos en cosas diferentes.
>>
>> La solución que aportó Carlos funciona. Todavía no he leído el
>> código completamente para ver lo que hace cada función, pero me
>> llamó la atención que funcionase directamente con el archivo
>> original que sale del programa en cuestión, ya que es levemente
>> diferente a los que colocó Rodrigo.
>>
>> 50050 9
>>
>> 0.1576E-01 0.2021 0.3830E-02 0.1846
>> 0.4018E-02 0.8251E-03 0.8805E-01
>>
>> 0.8347E-02 1.028
>> 50100 9
>> 0.1417E-01 0.3379 0.3223E-02 0.8510E-01
>> 0.4129E-02 0.3190E-02 0.8401E-01
>> 0.9298E-02 0.9365
>> 50150 9
>>
>> 0.1357E-01 0.3061 0.3747E-02 0.1077
>> 0.3989E-02 0.4462E-02 0.8564E-01
>>
>> 0.9126E-02 0.9451
>>
>> Los "50xxx 9" son respectivamente numero de iteración y
>> columna (que no son necesarios luego para posteriores análisis) y el
>> resultado que devuelve el código de Carlos es justamente un
>> data.frame sin esas dos columnas.
>>
>> Yo había solucionado pero con previo pasaje por alguna planilla
>> para guardarla con algún separador.
>>
>> Luego lo levantas en R (a mi me gusta RStudio) y :
>>
>> ##############################
>> ######################
>> b=as.vector(t(datos.ini)) # transpongo y transformo en vector el
>> data.frame previamente importado
>>
>> c=subset(b,is.na [7](b)==F) # Elimino nos NA (que se generan en el
>> tratamiento previo de una planilla de cálculo)
>>
>> d=matrix(c,4000,11, byrow=T) # sabiendo que son 4000 las líneas lo
>> paso a una matriz
>>
>> datos.fin=as.data.frame(d[,-c(1:2)]) # quito las dos primeras
>> columnas (iteración y nº de columnas) que no son interesantes
>>
>> ##########################################################
>>
>> Obviamente es más particular para el problema específico
>> presentado y sin dudas es preferible la opción presentada por Carlos.
>>
>> Saludos y gracias!
>>
>> Fernando
>>
>> El 22 de febrero de 2013 17:26, Carlos Ortega
>> <cof en qualityexcellence.es> escribió:
>>
>>> Hola,
>>>
>>> Mira si este código te funciona:
>>>
>>> ###############################################################
>>> > dat.in [1] <- readLines("rod.txt", n=-1)* #grabé las líneas en
>>> un fichero al
>>> estilo de lo que tendrás*
>>> > dat.in [1]
>>> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846
>>> 0.4018E-02 0.8251E-03
>>> 0.8805E-01"
>>> [2] " 0.8347E-02 1.028"
>>>
>>> [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077
>>> 0.3989E-02
>>> 0.4462E-02 0.8564E-01"
>>> [4] " 0.9126E-02 0.9451"
>>>
>>> > library(stringr)
>>> > dat.end <- str_trim(dat.in [1])* #Quito los espacios en blanco al
>>> principio y
>>> final de las líneas*
>>> > dat.end
>>> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846
>>> 0.4018E-02 0.8251E-03
>>> 0.8805E-01"
>>> [2] "0.8347E-02 1.028"
>>>
>>> [3] "0.1357E-01 0.3061 0.3747E-02 0.1077
>>> 0.3989E-02 0.4462E-02
>>> 0.8564E-01"
>>> [4] "0.9126E-02 0.9451"
>>>
>>> >
>>> > j<-0
>>> > dat.gd [2] <- 0
>>> > for(i in 1:length(dat.end)) {
>>> +
>>> + if( length(unlist(str_split(dat.end[i], " "))) > 10 ) {
>>> + j <- j+1
>>> + dat.gd [2][j] <- paste(dat.end[i], dat.end[i+1], sep= " ")
>>> + } else { next }
>>> + }
>>> >
>>> >
>>> > t.con<-textConnection(dat.gd [2])
>>> > dat.fin<-read.table(t.con, as.is [3]=T)
>>> > close(t.con)
>>> >
>>> > dat.fin
>>> V1 V2 V3 V4 V5
>>> V6 V7 V8 V9
>>> 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805
>>> 0.008347 1.0280
>>> 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564
>>> 0.009126 0.9451
>>>
>>> #######################################################################
>>>
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es [4]
>>>
>>> El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben <
>>> javier.ruben.marcuzzi en gmail.com> escribió:
>>>
>>> > Rod López
>>> >
>>> > Lo que usted envía si no entiendo mal no es un problema, ¿si
>>> cambia a un
>>> > monitor grande se soluciona automáticamente?, ¿que posibilidad
>>> es que
>>> > todo es una sola línea pero al visualizarla aparecen dos? O
>>> entendí todo
>>> > mal.
>>> >
>>> > No se como es BOA, pero en gibbs luego de tener los resultados,
>>> yo supe
>>> > utilizar as.data.frame, y continuar sin problemas.
>>> >
>>> > Javier Marcuzzi
>>> >
>>> > On vie, 2013-02-22 [5] at 14:21 -0200, rod lopez wrote:
>>> > > BOA,
>>> >
>>> > _______________________________________________
>>> > R-help-es mailing list
>>> > R-help-es en r-project.org
>>> > https://stat.ethz.ch/mailman/listinfo/r-help-es [6]
>>> >
>>>
>>> --
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es [4]
>>>
>>> [[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 [6]
>
>
>
> Links:
> ------
> [1] http://dat.in
> [2] http://dat.gd
> [3] http://as.is
> [4] http://www.qualityexcellence.es
> [5] tel:2013-02-22
> [6] https://stat.ethz.ch/mailman/listinfo/r-help-es
> [7] http://is.na
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
--
MARCELINO DE LA CRUZ ROT
Universidad Politecnica de Madrid
Más información sobre la lista de distribución R-help-es