Buenas noches Javier,

Tengo una inquietud:  Al comenzar el procesamiento de los datos, comienzas
con

> head(resultado.Klspl.random)
                                   solution std error      z ratio
ped(Animal)_80396:spl(DIM, 6)_1 -0.026948407 0.5567686 -0.048401452
ped(Animal)_80396:spl(DIM, 6)_2 -0.047078428 0.5565063 -0.084596394
ped(Animal)_80396:spl(DIM, 6)_3 -0.067344169 0.5561976 -0.121079571
ped(Animal)_80396:spl(DIM, 6)_4 -0.089524791 0.5556541 -0.161116035
ped(Animal)_80396:spl(DIM, 6)_5 -0.022031096 0.5553722 -0.039669067
ped(Animal)_80411:spl(DIM, 6)_1 -0.005470429 0.5555828 -0.009846288

y cuando lo exportas a .txt y cambias los "_" y ":" por espacios, obtienes

> head(resultado.Klspl.random)

 V1    V2         V3 V4          V5       V6           V7
 1 ped(Animal) 80396 spl(DIM,6)  1 -0.52237696 6.052892 -0.086302050
 2 ped(Animal) 80396 spl(DIM,6)  2 -0.57648029 6.025452 -0.095674193
 3 ped(Animal) 80396 spl(DIM,6)  3  1.17401903 6.023843  0.194895353

Por que cambiaron los valores -0.02694, -0.0470, -0.0673,... (e.g. primera
columna numerica del data.frame() con que comienzas) a
-0.52237, -0.57648, 1.17401, ... (e.g. segunda columna del data.frame()
resultante)?   Estas realizando algun procedimiento aritmetico adicional?

Ahora, asumiendo que no realizas operacion alguna, las siguientes lineas
transforman tus datos originales (con "_" y ":" incluidos) en otros datos
sin estos caracteres y en la forma que buscas usando 'V4" como la variable
de interes. Aqui los datos originales los he llamado "x":

# 1. borrando lo que necesitas

#  -- tambien puede hacerse con gsub() unicamente y para ello es necesario
descifrar el "patron"

res <- t(sapply(strsplit(as.character(x[,1]), "[_]|[:]"), "[", c(2, 4)))


 # 2. uniendolo a los datos originales

x <- cbind(res, x[,-1])

colnames(x) <- c('Animal', 'ID', 'V4', 'V5', 'V6')

x

# Animal ID           V4        V5           V6

# 1  80396  1 -0.026948407 0.5567686 -0.048401452

# 2  80396  2 -0.047078428 0.5565063 -0.084596394

# 3  80396  3 -0.067344169 0.5561976 -0.121079571

# 4  80396  4 -0.089524791 0.5556541 -0.161116035

# 5  80396  5 -0.022031096 0.5553722 -0.039669067

# 6  80411  1 -0.005470429 0.5555828 -0.009846288


# 3. armando la base de datos de la manera que mencionas,

#    siendo V4 la variable de interes

require(reshape)

x <- cast(x, Animal ~ ID, value = 'V4')

colnames(x) <- c('Animal', paste('valor', 1:(ncol(x)-1), sep = ''))

x
# Animal       valor1      valor2      valor3      valor4      valor5
# 1  80396 -0.026948407 -0.04707843 -0.06734417 -0.08952479 -0.02203110
# 2  80411 -0.005470429          NA          NA          NA          NA

Aqui, los numeros 1 y 2 en las filas son solo indicadores de las filas en el
data.frame() resultante y no son de interes.

Espero sea de utilidad,
              Jorge Ivan Velez



2010/9/14 Javier Marcuzzi <>

> No se como explicar de forma fácil, pero obtengo los resultados que busco,
> pero a estos resultados los tengo que llevar a un data.frame para
> multiplicarlos a una matriz. El problema es que no tengo los valores
> ordenados de tal forma de poder multiplicar directamente las matrices, por
> lo cuál exporto los resultados a un archivo de texto, en estos reemplazo
> algunos caracteres por espacios en blanco, los importo a R, y usando sql
> extraigo los resultados, creando una columna para cada tipo se resultado
> según el sql, y recién ahí tengo mi matiz para multiplicarla a la otra
> matriz.
> Les paso un ejemplo, y si alguien puede indicarme una forma como para hacer
> todo el proceso automático desde R (sin tener que exportar, reemplazar
> caracteres, etc.) mi trabajo se agiliza enormemente.
>
> Los datos iniciales son los siguientes (provenientes de un análisis previo)
> > head(resultado.Klspl.random)
>                                    solution std error      z ratio
> ped(Animal)_80396:spl(DIM, 6)_1 -0.026948407 0.5567686 -0.048401452
> ped(Animal)_80396:spl(DIM, 6)_2 -0.047078428 0.5565063 -0.084596394
> ped(Animal)_80396:spl(DIM, 6)_3 -0.067344169 0.5561976 -0.121079571
> ped(Animal)_80396:spl(DIM, 6)_4 -0.089524791 0.5556541 -0.161116035
> ped(Animal)_80396:spl(DIM, 6)_5 -0.022031096 0.5553722 -0.039669067
> ped(Animal)_80411:spl(DIM, 6)_1 -0.005470429 0.5555828 -0.009846288
>
> Exporto estos resultados a un archivo txt, a este le borro la primer línea,
> y reemplazo (_) por un espacio en blanco, (:) por un espacio en blanco...
>
> Luego los importo a R de la siguiente forma
> resultado.Klspl.random <- read.table("C:/Users/Javier
> Marcuzzi/Desktop/A/resultado.Klspl.random.txt",
>   header=FALSE, sep="", na.strings="NA", dec=".", strip.white=TRUE)
>
> Los datos cambiaron a la siguiente presentación en el data.frame
>
> head(resultado.Klspl.random)
>
>            V1    V2         V3 V4          V5       V6           V7
>  1 ped(Animal) 80396 spl(DIM,6)  1 -0.52237696 6.052892 -0.086302050
>  2 ped(Animal) 80396 spl(DIM,6)  2 -0.57648029 6.025452 -0.095674193
>  3 ped(Animal) 80396 spl(DIM,6)  3  1.17401903 6.023843  0.194895353
>
> Una vez importados, utilize sqldf para armar el data frame, que tiene la
> siguiente forma:
> Animal 80396 (el mismo animal se repite en 4 columnas, el renglón siguiente
> corresponde al siguiente animal), siguiente valor -0.5233 (es decir cuándo
> el animal se encuentra con el valor 1 en V4), siguiente columna: animal
> cuándo V4 vale 2 tomo el valor de V5 (-0.57)
>
> Queda algo como:        Animal  valor1  valor2  valor3
>                        80396           -0.5233         -0.57           1.17
>
> Y me gustaría automatizar este proceso.
> ¿Alguien tiene una idea?
>
> Copio nuevamente los datos desde los cuáles inicio mi trabajo:
>
> > head(resultado.Klspl.random)
>                                    solution std error      z ratio
> ped(Animal)_80396:spl(DIM, 6)_1 -0.026948407 0.5567686 -0.048401452
> ped(Animal)_80396:spl(DIM, 6)_2 -0.047078428 0.5565063 -0.084596394
> ped(Animal)_80396:spl(DIM, 6)_3 -0.067344169 0.5561976 -0.121079571
> ped(Animal)_80396:spl(DIM, 6)_4 -0.089524791 0.5556541 -0.161116035
> ped(Animal)_80396:spl(DIM, 6)_5 -0.022031096 0.5553722 -0.039669067
> ped(Animal)_80411:spl(DIM, 6)_1 -0.005470429 0.5555828 -0.009846288
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]

