[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