[R-es] determinar el ancho de columnas

Fernando Macedo fermace en gmail.com
Vie Feb 22 22:35:11 CET 2013


Con algunas modificaciones el código de Marcelino funciona correctamente:

##########################################################3

datos= scan(file="ejemplo.txt" , sep=" ")
datos.pre=subset(datos, is.na(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(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 <- readLines("rod.txt", n=-1)* #grabé las líneas en un fichero
>> al
>> estilo de lo que tendrás*
>> > dat.in
>> [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)* #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 <- 0
>> > for(i in 1:length(dat.end)) {
>> +
>> +    if( length(unlist(str_split(dat.end[i], " "))) > 10 ) {
>> +     j <- j+1
>> +     dat.gd[j] <- paste(dat.end[i], dat.end[i+1], sep= " ")
>> +    } else { next }
>> + }
>> >
>> >
>> > t.con<-textConnection(dat.gd)
>> > dat.fin<-read.table(t.con, as.is=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
>>
>>
>> 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 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
>> >
>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>         [[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
>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20130222/07b439f2/attachment.html>
------------ próxima parte ------------
   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    
   50200       9
  0.1461E-01  0.2491      0.5650E-02  0.1045      0.4214E-02  0.2177E-02  0.7706E-01
  0.7883E-02   1.031    
   50250       9
  0.1143E-01  0.2198      0.3780E-02  0.1280      0.4395E-02  0.2987E-02  0.9272E-01
  0.6700E-02   1.019    
   50300       9
  0.2028E-01  0.1376      0.3936E-02  0.1155      0.5733E-02  0.3910E-02  0.8899E-01
  0.8811E-02  0.9528    
   50350       9
  0.1396E-01  0.1796      0.4725E-02  0.1014      0.4071E-02  0.3589E-02  0.9865E-01
  0.7984E-02  0.9842    
   50400       9
  0.1653E-01  0.2141      0.4735E-02  0.1305      0.4627E-02  0.5925E-02  0.1372    
  0.8015E-02  0.9458    
   50450       9
  0.1148E-01  0.2652      0.3694E-02  0.7782E-01  0.5615E-02  0.8070E-02  0.1506    
  0.6926E-02  0.9199    


Más información sobre la lista de distribución R-help-es