[R-es] Resumen de R-help-es, Vol 81, Envío 39

Bernardo Mendoza bmendoz en gmail.com
Jue Nov 19 21:50:08 CET 2015


Muchas gracias por la respuesta.
Lo intento.
Saludos
El 19/11/2015 11:08, <r-help-es-request en r-project.org> escribió:

> Envíe los mensajes para la lista R-help-es a
>         r-help-es en r-project.org
>
> Para subscribirse o anular su subscripción a través de la WEB
>         https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> O por correo electrónico, enviando un mensaje con el texto "help" en
> el asunto (subject) o en el cuerpo a:
>         r-help-es-request en r-project.org
>
> Puede contactar con el responsable de la lista escribiendo a:
>         r-help-es-owner en r-project.org
>
> Si responde a algún contenido de este mensaje, por favor, edite la
> linea del asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of R-help-es digest...". Además, por favor, incluya en
> la respuesta sólo aquellas partes del mensaje a las que está
> respondiendo.
>
>
> Asuntos del día:
>
>    1. Re: Borrar cada fila 400 (Olivier Nuñez)
>    2. Ayuda función plotMF paquete FRBS (Bernardo Mendoza)
>    3. Re: Ayuda función plotMF paquete FRBS (Víctor Granda García)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 18 Nov 2015 13:22:17 +0100 (CET)
> From: Olivier Nuñez <onunez en unex.es>
> To: Javier Rubén Marcuzzi <javier.ruben.marcuzzi en gmail.com>
> Cc: r-help-es en r-project.org
> Subject: Re: [R-es] Borrar cada fila 400
> Message-ID: <502122808.19506481.1447849337641.JavaMail.zimbra en unex.es>
> Content-Type: text/plain; charset=utf-8
>
> Ups!
> En el codigo anterior sustituye
>
> temp2= lapply(temp,index) #data.frames indexados
>
> por
>
> temp2= lapply(seq_along(temp),index) #data.frames indexados
>
> Un saludo. Olivier
>
> ----- Mensaje original -----
> De: "Olivier Nuñez" <onunez en unex.es>
> Para: "Javier Rubén Marcuzzi" <javier.ruben.marcuzzi en gmail.com>
> CC: r-help-es en r-project.org
> Enviados: Miércoles, 18 de Noviembre 2015 13:15:52
> Asunto: Re: [R-es] Borrar cada fila 400
>
> Jesús,
>
> una manera eficiente de llevarlo es lo siguiente:
>
> Pon todos tus ficheros csv en un directorio que llamaremos "DIR".
> Luego, muevete a este directorio con setwd("ruta de DIR").
> Una vez hecho, el siguiente codigo debería funcionarte:
>
> ficheros=list.files(pattern="*.csv")
> temp=lapply(as.list(ficheros),read.csv) #lee la lista de data.frame
> index <- function(x) {temp[[x]]$region <- x; temp[[x]]} #función para
> indexar cada data.frame (variable region)
> temp2= lapply(temp,index) #data.frames indexados
> datos=do.call(rbind,temp2) #concatena data.frame indexados
> tapply(datos$x1,datos$region,mean) #calcula media de la columna "x1" en
> cada data.frame
>
> El codigo puede ser más sencillo si utilizas el paquete "plyr".
> Un saludo. Olivier
>
>
> ----- Mensaje original -----
> De: "Javier Rubén Marcuzzi" <javier.ruben.marcuzzi en gmail.com>
> Para: "Jesús Para Fernández" <j.para.fernandez en hotmail.com>, "Carlos
> Ortega" <cof en qualityexcellence.es>
> CC: r-help-es en r-project.org
> Enviados: Miércoles, 18 de Noviembre 2015 11:57:11
> Asunto: Re: [R-es] Borrar cada fila 400
>
> Estimado Jesús Para Fernández
>
> El ejemplo que usted presenta es algo básico pero no por ello lejos de
> carecer importancia, al respecto hay varios autores de paquetes que
> abordaron ese problema buscando optimizar, facilitar, etc.
>
> Lo que usted piensa es correcto, si desea buscar optimizar puede leer algo
> de plyr, data.table, reshape (este tiene un video explicando casi lo que
> usted plantea), y algunas otras opciones. No se preocupe en buscar lo más
> eficiente, utilice lo que comprende y puede escribir, porque a mi me paso
> muchas veces que por buscar lo más eficiente no medí ni el tiempo invertido
> ni la facilidad de mantener mi código. Lógicamente a la larga uno termina
> manejando varias alternativas para lo mismo, pero por lo que usted pregunta
> mi consejo es ¿llegó solo a resolverlo? Si es así para usted esa es la
> mejor alternativa. Dentro de unos días puede buscar otra opción, pero no
> mezcle todo junto en su cabeza. Deje descansar al cerebro sobre ese
> problema. Yo pensé hace un tiempo escribir en forma de libro varias formas
> de realizar lo mismo con R, cosas que no son ?la ciencia ni el gran libro
> de R?, simplemente lo que aprendí con el tiempo, pero el cansancio mental
> de realizar esa tarea es impresionante. Por lo cuál no le recomiendo que
> busque una alternativa óptima para resolver ese problema, si encuentra la
> solución descanse, luego de unos días regrese a R buscando optimizar.
>
> Dentro de sus pensamientos está dividir el data.frame, una forma rápida es
> por ejemplo Edad[Edad>1 & Edad<3] (los que tienen edad mayor a 1 y menor a
> 3, por no decir dos años).
>
> Si es que no comprendí mal, que también es posible.
>
> Javier Rubén Marcuzzi
> Técnico en Industrias Lácteas
> Veterinario
>
>
>
> De: Jesús Para Fernández
> Enviado: miércoles, 18 de noviembre de 2015 5:02
> Para: Carlos Ortega
> CC: r-help-es en r-project.org
> Asunto: Re: [R-es] Borrar cada fila 400
>
>
> Buenas Carlos,
>
> Lo que quiero hacer es calcular la media de diferentes regiones con un
> patrón de repetición. Ayer estaba algo espeso, a ver si ahora consigo
> explicarme mejor.
>
> Tengo un dataframe creado de la union de varios csv. Esta compuesto por n
> filas y x columnas, a la que he añadido, gracias a vuestros consejos, una
> columna "nueva", donde se indica el csv al que pertenece. En total tengo un
> dataframe al uqellamare "datos".
>
> La dispoisción queda por tanto de la siguiente forma:
>
> x1    x2     x3    ....    xn    nueva
> 21   23    32    ....    12    1
> 27   21    39    ....    14    1
> 24   22    30    ....    11    1
> ..............................................
> 21   24    32    ....   19    2
> 27   21    39    ....    14    2
> ..............................................
> 27   22     30    ....    11    n
>
>
>
> Por tanto quiero ir guardando en una matriz las medias de cada una de las
> regiones, las cuales serian, por ejemplo:
> region1,1 (filas 1:20,columnas 1:20) para cada valor diferente de nueva
> region 2,1 (filas 21:40,columnas1:20) para cada valor diferente de nueva
> region 1,2 (filas 1:20, columnas 21:20)...
>
> y asi para todas.
>
> Acabo de pensar que puedo predefinir las zonas y crear esto:
>
> zona1<-tapply(as.matrix(datos[1:20,1]),datos$nueva,mean,na.rm=T)
> zona2<-tapply(as.matrix(datos[1:20,1]),datos$nueva,mean,na.rm=T)
>
> y luego unir todo en un unico dataframe
> datosmedias<-data.frame(zona1,zona2,....)
>
> Estoy seguro que hay una manera más eficiente de conseguirlo.
>
> Gracias por tdoo
> JEsús
>
>
> Date: Tue, 17 Nov 2015 20:33:49 +0100
> Subject: Re: [R-es] Borrar cada fila 400
> From: cof en qualityexcellence.es
> To: j.para.fernandez en hotmail.com
> CC: r-help-es en r-project.org
>
> ¿Qué quieres decir con "valores que quiera"?.
> ¿Quieres calcular la media de unas regiones de la matriz con algún tipo de
> patrón? ¿periodicidad?
> Si es que no, basta como te mostraba en el ejemplo, definir unos índices
> (tu 1 y 20) y ya está...
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El 17 de noviembre de 2015, 19:29, Jesús Para Fernández <
> j.para.fernandez en hotmail.com> escribió:
>
>
>
> Vale, con as.matrix lo consigo.
>
> es poner un mean(as.matrix(1:20,1:20)) y lo obtengo.
>
> Ahora lo bonito es como hacerlo para los valores que quiera, isn usar un
> bucle for, sino un apply, o un tapply...
>
> > From: j.para.fernandez en hotmail.com
> > To: cof en qualityexcellence.es
> > Date: Tue, 17 Nov 2015 19:17:30 +0100
> > CC: r-help-es en r-project.org
> > Subject: Re: [R-es] Borrar cada fila 400
> >
> > Gracias Carlos una vez más, pero no es exactamente lo que quiero
> >
> > Con colMeans estas calculando por columnas, pero yo quiero que calcule
> asi:
> >
> > mean(datos[1:20,1:20]), pero claro, para toda la secuencia.
> >
> >
> > mean(datos[1:20,1:20]) me devuelve el error-> Error in datos[1:2, 1:2] :
> object of type 'closure' is not subsettable
> >
> >
> >
> >
> >
> >
> > Date: Tue, 17 Nov 2015 18:34:59 +0100
> > Subject: Re: [R-es] Borrar cada fila 400
> > From: cof en qualityexcellence.es
> > To: j.para.fernandez en hotmail.com
> > CC: cgb en datanalytics.com; r-help-es en r-project.org
> >
> > Hola,
> >
> > Esta es una forma.
> > Indicas con unos indices el trozo que quieres, lo seleccionas
> (df_df_reg) y sobre él calculas medias por fila o por columna. R tiene
> funciones específicas para este cálculo.
> >
> > #---------------------------
> > n_row <- 400
> > n_col <- 500
> > df_mat <- matrix(rnorm(n_row * n_col), nrow=n_row, ncol=n_col)
> > df_df <- as.data.frame(df_mat)
> >
> > n_row_ini <- 1
> > n_row_end <- 20
> > n_col_ini <- 1
> > n_col_end <- 20
> >
> > df_df_reg <- df_df[n_row_ini:n_row_end, n_col_ini:n_col_end ]
> > colMeans ( df_df_reg, na.rm=TRUE )
> > rowMeans ( df_df_reg, na.rm=TRUE )
> > #---------------------------
> >
> >
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
> >
> > El 17 de noviembre de 2015, 18:20, Jesús Para Fernández <
> j.para.fernandez en hotmail.com> escribió:
> >
> >
> >
> > La verad es que es un asolución sencilla pero muy eficaz.
> >
> > Ya con esta siguiente duda termino:
> >
> > La matriz de cada csv es de 400x500, es decir, 400 filas y 500 columnas.
> Si quiero calcular la media de diferentes regiones del csv, por ejemplo la
> media de las 20 primeras filas y 20 primreas columnas, pero del que tiene
> los 50.000 registros, tomando el valor 1, como pued hacerlo??
> >
> > He probado con tapply(datos,new,mean,na.rm=T) pero a parte de darme
> error no segmenta como quiero.
> >
> > Gracias
> >
> > Date: Tue, 17 Nov 2015 16:45:03 +0100
> > Subject: Re: [R-es] Borrar cada fila 400
> > From: cof en qualityexcellence.es
> > To: j.para.fernandez en hotmail.com
> > CC: cgb en datanalytics.com; r-help-es en r-project.org
> >
> > Hola,
> >
> > Esta es una forma:
> >
> > > DF <- data.frame(a=rnorm(1000))
> > > DF$new <- 1 +  floor(1:nrow(DF) / 400)
> > > unique(DF$new)
> > [1] 1 2 3
> >
> >
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
> >
> > El 17 de noviembre de 2015, 15:50, Jesús Para Fernández <
> j.para.fernandez en hotmail.com> escribió:
> > Entiendo la logica pero no veo el como hacerlo.
> >
> >
> >
> > No se como implementar el 1+floor(1:nrow(datos)/400))
> >
> >
> >
> > Gracias
> >
> > Jesús
> >
> >
> >
> > > Date: Tue, 17 Nov 2015 15:31:39 +0100
> >
> > > Subject: Re: [R-es] Borrar cada fila 400
> >
> > > From: cgb en datanalytics.com
> >
> > > To: j.para.fernandez en hotmail.com
> >
> > > CC: josea.bartolome en mineco.es; r-help-es en r-project.org
> >
> > >
> >
> > > 1 +  floor(1:nrow(datos) / 400)
> >
> > >
> >
> > > Pura aritmética, de nuevo.
> >
> > >
> >
> > > Un saludo,
> >
> > >
> >
> > > Carlos J. Gil Bellosta
> >
> > > http://www.datanalytics.com
> >
> > >
> >
> > > El día 17 de noviembre de 2015, 15:28, Jesús Para Fernández
> >
> > > <j.para.fernandez en hotmail.com> escribió:
> >
> > > > Gracuas a todos!!!
> >
> > > >
> >
> > > > Por cierto, esta ya es de nota. Si quiero agregar una columna, y que
> cada 400 piezsa el valor se incremente en una unidad, es decir las 400
> primeras, tendrian cada fila el valor 1. Las siguientes 400, 2, ....
> >
> > > >
> >
> > > > Lo he hecho con un for, pero va bastante lento:
> >
> > > > k<-1
> >
> > > > for(i in 1:length(datos[,1])){
> >
> > > >
> >
> > > > if(i%%400 == 0){k = k +1}
> >
> > > > datos[i,9] <- k;
> >
> > > >
> >
> > > > }
> >
> > > >
> >
> > > >
> >
> > > >> From: josea.bartolome en mineco.es
> >
> > > >> To: j.para.fernandez en hotmail.com; r-help-es en r-project.org
> >
> > > >> Subject: RE: [R-es] Borrar cada fila 400
> >
> > > >> Date: Tue, 17 Nov 2015 14:22:14 +0000
> >
> > > >>
> >
> > > >> Prueba con:
> >
> > > >>
> >
> > > >> Datos[-seq(from = 400, to=50000, by = 400), ]
> >
> > > >>
> >
> > > >> No necesitas un buche, para eliminar las filas.
> >
> > > >>
> >
> > > >> Un cordial saludo.
> >
> > > >>
> >
> > > >> -----Mensaje original-----
> >
> > > >> De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre
> de Jesús Para Fernández
> >
> > > >> Enviado el: Tuesday, November 17, 2015 3:15 PM
> >
> > > >> Para: r-help-es en r-project.org
> >
> > > >> Asunto: [R-es] Borrar cada fila 400
> >
> > > >>
> >
> > > >> Buenas, tengo un csv [csv final] con 50000 filas, que es uni?n de
> varios csv [csv particular].
> >
> > > >>
> >
> > > >> Cada csv [csv particular] tiene en la ?ltima fila, la 400, una
> serie de valores que quiero eliminar, por lo que del [csv filan] quiero
> borrar la linea 400,800,1200,....
> >
> > > >>
> >
> > > >>
> >
> > > >> Lo he intentado con un bucle for:
> >
> > > >>
> >
> > > >> for(i in 1:50000){
> >
> > > >> if(i%%400 == 0) {datos[-i,]}
> >
> > > >> }
> >
> > > >>
> >
> > > >>
> >
> > > >> Pero no me funciona. Adem?s me han dicho que con apply puede ser
> mucho m?s eficiente el algoritmo. ?Alguna idea?
> >
> > > >>
> >
> > > >> Gracias
> >
> > > >>
> >
> > > >>
> >
> > > >>       [[alternative HTML version deleted]]
> >
> > > >>
> >
> > > >
> >
> > > >         [[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
> >
> >
> >
> >         [[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
> >
> > --
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.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
>
>
>
> --
> 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
>
>
>
>         [[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
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
> ------------------------------
>
> Message: 2
> Date: Wed, 18 Nov 2015 23:09:26 +0000
> From: Bernardo Mendoza <bmendoz en gmail.com>
> To: r-help-es en r-project.org
> Subject: [R-es] Ayuda función plotMF paquete FRBS
> Message-ID:
>         <CANDXz=XY9ctcW4ayoQxy86+=58400mu68QS6D=d9jkA1=
> Pj0Hg en mail.gmail.com>
> Content-Type: text/plain; charset="UTF-8"
>
> Hola a todos.
> Estoy probando los ejemplos del paquete en RStudio y cada vez que intento
> usar la función plotMV obtengo el error
>
> Error in plot.new() : figure margins too large
> ¿Podría ser un problema de la configuración de RStudio?
>
> Gracias de antemano
>
> Bernardo Mendoza
>
>         [[alternative HTML version deleted]]
>
>
>
> ------------------------------
>
> Message: 3
> Date: Wed, 18 Nov 2015 23:45:04 +0000
> From: Víctor Granda García <victorgrandagarcia en gmail.com>
> To: Bernardo Mendoza <bmendoz en gmail.com>, r-help-es en r-project.org
> Subject: Re: [R-es] Ayuda función plotMF paquete FRBS
> Message-ID:
>         <CAOpgSEa-mr31_APN=
> ATki1+0Wb9zADDWJstFeN+u3ku0cdjvDQ en mail.gmail.com>
> Content-Type: text/plain; charset="UTF-8"
>
> Hola Bernardo.
>
> Si te da ese error, trata de hacer el panel de graficos de RStudio más
> grande. A mi me ha dado ese error al hacer algunos heatmaps grandes y es
> simplemente que no puede dibujarlo en el tamaño del panel.
>
> Espero que te sirva, un saludo.
>
>
> Víctor Granda
>
> El jue., 19 nov. 2015 a las 0:09, Bernardo Mendoza (<bmendoz en gmail.com>)
> escribió:
>
> > Hola a todos.
> > Estoy probando los ejemplos del paquete en RStudio y cada vez que intento
> > usar la función plotMV obtengo el error
> >
> > Error in plot.new() : figure margins too large
> > ¿Podría ser un problema de la configuración de RStudio?
> >
> > Gracias de antemano
> >
> > Bernardo Mendoza
> >
> >         [[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
> >
>
>         [[alternative HTML version deleted]]
>
>
>
> ------------------------------
>
> Subject: Pié de página del digest
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> ------------------------------
>
> Fin de Resumen de R-help-es, Vol 81, Envío 39
> *********************************************
>

	[[alternative HTML version deleted]]



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