Ana Pérez V.
2012-Mar-06 12:41 UTC
[R-es] Buscando la solución más eficiente para generar resultados a partir de un list
Hola: Tengo una lista de 2 elementos, cada uno de los cuales contiene información relativa a un sujeto (Pablo y Carlos). lSujetos <- list() lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) A continuación, leo las series temporales correspondientes a cada individuo. En este caso leo, para cada individuo, las series correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: misSeries <- lapply(lSujetos, leeSeries) siendo leeSeries la función que se encarga de recoger esas series. Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos principales y cada uno tiene 3 subelementos (uno por serie temporal). Pues bien, sobre esta variable (misSeries) debo aplicar diferentes funciones para obtener diversos parámetros. Un ejemplo: resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) Pues bien: exactamente esos resultados no los debo generar para cada serie, sino para cada serie y período, pudiendo existir más de un período (supongamos 5 períodos); de tal modo que debo volcar en fichero una tabla de resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de individuos (en este caso N=2). ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de meter en juego al vector de posibles períodos, y a la manera de aplicar las funciones pensando en que el objetivo es mostrar esa tabla de resultados. Espero no haberme extendido demasiado. Gracias. Un saludo. [[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2012-Mar-06 13:35 UTC
[R-es] Buscando la solución más eficiente para generar resultados a partir de un list
Hola, ¿qué tal? Te recomendaría que, en lugar de ir de arriba para abajo, fueses de abajo para arriba: 1) Parte de una función simple que, a partir de una serie y periodo calcule tu parámetro de interés. 2) Crea una función que aplique (1) a una serie de periodos (seguramente, un sapply de la anterior). 3) Crea una función que aplique (2) a un sujeto (posiblemente, una lectura de series y de periodos). Y aplícala a tu lista de sujetos con un lapply. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78 en yahoo.es> escribió:> Hola: > > Tengo una lista de 2 elementos, cada uno de los cuales contiene información relativa a un sujeto (Pablo y Carlos). > > lSujetos <- list() > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > A continuación, leo las series temporales correspondientes a cada individuo. En este caso leo, para cada individuo, las series correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: > > misSeries <- lapply(lSujetos, leeSeries) > > siendo leeSeries la función que se encarga de recoger esas series. > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos principales y cada uno tiene 3 subelementos (uno por serie temporal). > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes funciones para obtener diversos parámetros. > > Un ejemplo: > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > Pues bien: exactamente esos resultados no los debo generar para cada serie, sino para cada serie y período, pudiendo existir más de un período (supongamos 5 períodos); de tal modo que debo volcar en fichero una tabla de resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de individuos (en este caso N=2). > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de meter en juego al vector de posibles períodos, y a la manera de aplicar las funciones pensando en que el objetivo es mostrar esa tabla de resultados. > > Espero no haberme extendido demasiado. > > Gracias. > > Un saludo. > [[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 >
Ana Pérez V.
2012-Mar-07 19:50 UTC
[R-es] Buscando la solución más eficiente para generar resultados a partir de un list
Hola: Gracias, Carlos. Me has iluminado. Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada serie y período le aplico una función cuyo resultado debo utilizar para un cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, el período y el valor obtenido en el cálculo previo. Por tal motivo, me interesaría que ese valor obtenido que voy a necesitar me quedase incorporado en la lista de partida, esto es, dentro de cada componente (junto con la serie y el período). ¿Cómo puedo lograrlo?. Gracias. Saludos Ana --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb@datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78@yahoo.es> CC: "r-help-es@r-project.org" <r-help-es@r-project.org> Fecha: martes, 6 de marzo, 2012 14:35 Hola, ¿qué tal? Te recomendaría que, en lugar de ir de arriba para abajo, fueses de abajo para arriba: 1) Parte de una función simple que, a partir de una serie y periodo calcule tu parámetro de interés. 2) Crea una función que aplique (1) a una serie de periodos (seguramente, un sapply de la anterior). 3) Crea una función que aplique (2) a un sujeto (posiblemente, una lectura de series y de periodos). Y aplícala a tu lista de sujetos con un lapply. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es> escribió:> Hola: > > Tengo una lista de 2 elementos, cada uno de los cuales contiene información relativa a un sujeto (Pablo y Carlos). > > lSujetos <- list() > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > A continuación, leo las series temporales correspondientes a cada individuo. En este caso leo, para cada individuo, las series correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: > > misSeries <- lapply(lSujetos, leeSeries) > > siendo leeSeries la función que se encarga de recoger esas series. > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos principales y cada uno tiene 3 subelementos (uno por serie temporal). > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes funciones para obtener diversos parámetros. > > Un ejemplo: > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > Pues bien: exactamente esos resultados no los debo generar para cada serie, sino para cada serie y período, pudiendo existir más de un período (supongamos 5 períodos); de tal modo que debo volcar en fichero una tabla de resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de individuos (en este caso N=2). > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de meter en juego al vector de posibles períodos, y a la manera de aplicar las funciones pensando en que el objetivo es mostrar esa tabla de resultados. > > Espero no haberme extendido demasiado. > > Gracias. > > Un saludo. > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Jorge I Velez
2012-Mar-07 20:00 UTC
[R-es] Buscando la solución más eficiente para generar resultados a partir de un list
Hola Ana, Es muy probable que no me quede lo suficientemente claro, pero te propongo crear una funcion cuyos argumentos sean la serie y el periodo y te entregue como resultado el numero que necesitas, la serie y el periodo. Algo como lo siguiente: f <- function(serie, periodo){ # hacer calculos minumero <- resultado # output list(xt = serie, k = periodo, numero = resultado) } Ahora, si aplicas res <- f(tuserie, tuperiodo) obtedras una lista como tres componentes llamada "res". Para acceder a la serie, periodo y el numero que necesitas harias res[[1]] res[[2]] res[[3]] respectivamente. Finalmente podrias crear otra funcion que toma los resultados de f() y calcule lo que sigue. Espero te sirva. Jorge.- 2012/3/7 Ana Pérez V. <>> Hola: > > Gracias, Carlos. Me has iluminado. > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > serie y período le aplico una función cuyo resultado debo utilizar para un > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > interesaría que ese valor obtenido que voy a necesitar me quedase > incorporado en la lista de partida, esto es, dentro de cada componente > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > Gracias. > > Saludos > Ana > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78@yahoo.es> > CC: "r-help-es@r-project.org" <r-help-es@r-project.org> > Fecha: martes, 6 de marzo, 2012 14:35 > > > Hola, ¿qué tal? > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > abajo para arriba: > > 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos). > > Y aplícala a tu lista de sujetos con un lapply. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es> escribió: > > Hola: > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > información relativa a un sujeto (Pablo y Carlos). > > > > lSujetos <- list() > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > A continuación, leo las series temporales correspondientes a cada > individuo. En este caso leo, para cada individuo, las series > correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > funciones para obtener diversos parámetros. > > > > Un ejemplo: > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > Pues bien: exactamente esos resultados no los debo generar para cada > serie, sino para cada serie y período, pudiendo existir más de un período > (supongamos 5 períodos); de tal modo que debo volcar en fichero una tabla > de resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de > individuos (en este caso N=2). > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > meter en juego al vector de posibles períodos, y a la manera de aplicar las > funciones pensando en que el objetivo es mostrar esa tabla de resultados. > > > > Espero no haberme extendido demasiado. > > > > Gracias. > > > > Un saludo. > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2012-Mar-07 20:02 UTC
[R-es] Buscando la solución más eficiente para generar resultados a partir de un list
Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,> 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos).lo que deberías hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply sería una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros sería igual). De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 Podrías recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema así (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78 en yahoo.es> escribió:> > Hola: > > Gracias, Carlos. Me has iluminado. > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > serie y período le aplico una función cuyo resultado debo utilizar para un > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > interesaría que ese valor obtenido que voy a necesitar me quedase > incorporado en la lista de partida, esto es, dentro de cada componente > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > Gracias. > > Saludos > Ana > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb en datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb en datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78 en yahoo.es> > CC: "r-help-es en r-project.org" <r-help-es en r-project.org> > Fecha: martes, 6 de marzo, 2012 14:35 > > > Hola, ¿qué tal? > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > abajo para arriba: > > 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos). > > Y aplícala a tu lista de sujetos con un lapply. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78 en yahoo.es> escribió: > > Hola: > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > información relativa a un sujeto (Pablo y Carlos). > > > > lSujetos <- list() > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > A continuación, leo las series temporales correspondientes a cada > > individuo. En este caso leo, para cada individuo, las series > > correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > funciones para obtener diversos parámetros. > > > > Un ejemplo: > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > Pues bien: exactamente esos resultados no los debo generar para cada > > serie, sino para cada serie y período, pudiendo existir más de un período > > (supongamos 5 períodos); de tal modo que debo volcar en fichero una tabla de > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de > > individuos (en este caso N=2). > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > > meter en juego al vector de posibles períodos, y a la manera de aplicar las > > funciones pensando en que el objetivo es mostrar esa tabla de resultados. > > > > Espero no haberme extendido demasiado. > > > > Gracias. > > > > Un saludo. > > [[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 > >
Ana Pérez V.
2012-Mar-08 06:15 UTC
[R-es] Buscando la solución más eficiente para generar resultados a partir de un list
Hola, ¿qué tal?. Gracias, Jorge y Carlos. En principio lo he implementado siguiendo la sugerencia de Jorge, y quería preguntaros cuál de las dos vías resultaría más eficiente para cubrir la posibilidad de que el volumen de datos sea significativo. Y en cualquier caso, respecto a la vía que me sugiere Carlos, ¿cómo creo la tabla "desnormalizada"?. ¿La creo a partir de mi lista inicial?. Gracias. Un saludo. --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb@datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78@yahoo.es> CC: "r-help-es@r-project.org" <r-help-es@r-project.org> Fecha: miércoles, 7 de marzo, 2012 21:02 Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,> 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos).lo que deberías hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply sería una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros sería igual). De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 Podrías recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema así (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78@yahoo.es> escribió:> > Hola: > > Gracias, Carlos. Me has iluminado. > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > serie y período le aplico una función cuyo resultado debo utilizar para un > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > interesaría que ese valor obtenido que voy a necesitar me quedase > incorporado en la lista de partida, esto es, dentro de cada componente > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > Gracias. > > Saludos > Ana > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78@yahoo.es> > CC: "r-help-es@r-project.org" <r-help-es@r-project.org> > Fecha: martes, 6 de marzo, 2012 14:35 > > > Hola, ¿qué tal? > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > abajo para arriba: > > 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos). > > Y aplícala a tu lista de sujetos con un lapply. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es> escribió: > > Hola: > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > información relativa a un sujeto (Pablo y Carlos). > > > > lSujetos <- list() > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > A continuación, leo las series temporales correspondientes a cada > > individuo. En este caso leo, para cada individuo, las series > > correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > funciones para obtener diversos parámetros. > > > > Un ejemplo: > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > Pues bien: exactamente esos resultados no los debo generar para cada > > serie, sino para cada serie y período, pudiendo existir más de un período > > (supongamos 5 períodos); de tal modo que debo volcar en fichero una tabla de > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de > > individuos (en este caso N=2). > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > > meter en juego al vector de posibles períodos, y a la manera de aplicar las > > funciones pensando en que el objetivo es mostrar esa tabla de resultados. > > > > Espero no haberme extendido demasiado. > > > > Gracias. > > > > Un saludo. > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Hola: Por favor, ¿alguien me puede explicar cómo creo esa tabla desnormalizada a la que alude Carlos y cómo la recorro?. Gracias. Saludos, Ana --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb@datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78@yahoo.es> CC: "r-help-es@r-project.org" <r-help-es@r-project.org> Fecha: miércoles, 7 de marzo, 2012 21:02 Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,> 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos).lo que deberías hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply sería una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros sería igual). De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 Podrías recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema así (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78@yahoo.es> escribió:> > Hola: > > Gracias, Carlos. Me has iluminado. > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > serie y período le aplico una función cuyo resultado debo utilizar para un > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > interesaría que ese valor obtenido que voy a necesitar me quedase > incorporado en la lista de partida, esto es, dentro de cada componente > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > Gracias. > > Saludos > Ana > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78@yahoo.es> > CC: "r-help-es@r-project.org" <r-help-es@r-project.org> > Fecha: martes, 6 de marzo, 2012 14:35 > > > Hola, ¿qué tal? > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > abajo para arriba: > > 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos). > > Y aplícala a tu lista de sujetos con un lapply. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es> escribió: > > Hola: > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > información relativa a un sujeto (Pablo y Carlos). > > > > lSujetos <- list() > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > A continuación, leo las series temporales correspondientes a cada > > individuo. En este caso leo, para cada individuo, las series > > correspondientes a las columnas de las posiciones 6, 7 y 8 en el fichero: > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > funciones para obtener diversos parámetros. > > > > Un ejemplo: > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > Pues bien: exactamente esos resultados no los debo generar para cada > > serie, sino para cada serie y período, pudiendo existir más de un período > > (supongamos 5 períodos); de tal modo que debo volcar en fichero una tabla de > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de > > individuos (en este caso N=2). > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > > meter en juego al vector de posibles períodos, y a la manera de aplicar las > > funciones pensando en que el objetivo es mostrar esa tabla de resultados. > > > > Espero no haberme extendido demasiado. > > > > Gracias. > > > > Un saludo. > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Ana, del correo de Carlos: De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 -----Mensaje original----- From: Ana Pérez V. Sent: Sunday, March 11, 2012 8:13 AM To: Carlos J. Gil Bellosta Cc: r-help-es en r-project.org Subject: [R-es] Tabla desnormalizada Hola: Por favor, ¿alguien me puede explicar cómo creo esa tabla desnormalizada a la que alude Carlos y cómo la recorro?. Gracias. Saludos, Ana --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb en datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb en datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78 en yahoo.es> CC: "r-help-es en r-project.org" <r-help-es en r-project.org> Fecha: miércoles, 7 de marzo, 2012 21:02 Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,> 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos).lo que deberías hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply sería una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros sería igual). De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 Podrías recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema así (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78 en yahoo.es> escribió:> > Hola: > > Gracias, Carlos. Me has iluminado. > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > serie y período le aplico una función cuyo resultado debo utilizar para un > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la > serie, > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > interesaría que ese valor obtenido que voy a necesitar me quedase > incorporado en la lista de partida, esto es, dentro de cada componente > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > Gracias. > > Saludos > Ana > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb en datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb en datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78 en yahoo.es> > CC: "r-help-es en r-project.org" <r-help-es en r-project.org> > Fecha: martes, 6 de marzo, 2012 14:35 > > > Hola, ¿qué tal? > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > abajo para arriba: > > 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos). > > Y aplícala a tu lista de sujetos con un lapply. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78 en yahoo.es> escribió: > > Hola: > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > información relativa a un sujeto (Pablo y Carlos). > > > > lSujetos <- list() > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > A continuación, leo las series temporales correspondientes a cada > > individuo. En este caso leo, para cada individuo, las series > > correspondientes a las columnas de las posiciones 6, 7 y 8 en el > > fichero: > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > funciones para obtener diversos parámetros. > > > > Un ejemplo: > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > Pues bien: exactamente esos resultados no los debo generar para cada > > serie, sino para cada serie y período, pudiendo existir más de un > > período > > (supongamos 5 períodos); de tal modo que debo volcar en fichero una > > tabla de > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de > > individuos (en este caso N=2). > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > > meter en juego al vector de posibles períodos, y a la manera de aplicar > > las > > funciones pensando en que el objetivo es mostrar esa tabla de > > resultados. > > > > Espero no haberme extendido demasiado. > > > > Gracias. > > > > Un saludo. > > [[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
Hola, Javier: Sí, pero ¿cómo creo esa tabla y cómo le aplico mis funciones para la obtención de nuevos parámetros?. Gracias. --- El dom, 11/3/12, Marcuzzi, Javier Rubén <javier.ruben.marcuzzi@gmail.com> escribió: De: Marcuzzi, Javier Rubén <javier.ruben.marcuzzi@gmail.com> Asunto: Re: [R-es] Tabla desnormalizada Para: "Ana Pérez V." <anapv78@yahoo.es>, "Carlos J. Gil Bellosta" <cgb@datanalytics.com> CC: r-help-es@r-project.org Fecha: domingo, 11 de marzo, 2012 15:01 Ana, del correo de Carlos: De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 -----Mensaje original----- From: Ana Pérez V. Sent: Sunday, March 11, 2012 8:13 AM To: Carlos J. Gil Bellosta Cc: r-help-es@r-project.org Subject: [R-es] Tabla desnormalizada Hola: Por favor, ¿alguien me puede explicar cómo creo esa tabla desnormalizada a la que alude Carlos y cómo la recorro?. Gracias. Saludos, Ana --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb@datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78@yahoo.es> CC: "r-help-es@r-project.org" <r-help-es@r-project.org> Fecha: miércoles, 7 de marzo, 2012 21:02 Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,> 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos).lo que deberías hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply sería una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros sería igual). De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 Podrías recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema así (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78@yahoo.es> escribió:> > Hola: > > Gracias, Carlos. Me has iluminado. > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > serie y período le aplico una función cuyo resultado debo utilizar para un > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > interesaría que ese valor obtenido que voy a necesitar me quedase > incorporado en la lista de partida, esto es, dentro de cada componente > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > Gracias. > > Saludos > Ana > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78@yahoo.es> > CC: "r-help-es@r-project.org" <r-help-es@r-project.org> > Fecha: martes, 6 de marzo, 2012 14:35 > > > Hola, ¿qué tal? > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > abajo para arriba: > > 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos). > > Y aplícala a tu lista de sujetos con un lapply. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es> escribió: > > Hola: > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > información relativa a un sujeto (Pablo y Carlos). > > > > lSujetos <- list() > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > A continuación, leo las series temporales correspondientes a cada > > individuo. En este caso leo, para cada individuo, las series > > correspondientes a las columnas de las posiciones 6, 7 y 8 en el > fichero: > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > funciones para obtener diversos parámetros. > > > > Un ejemplo: > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > Pues bien: exactamente esos resultados no los debo generar para cada > > serie, sino para cada serie y período, pudiendo existir más de un > período > > (supongamos 5 períodos); de tal modo que debo volcar en fichero una > tabla de > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de > > individuos (en este caso N=2). > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > > meter en juego al vector de posibles períodos, y a la manera de aplicar > las > > funciones pensando en que el objetivo es mostrar esa tabla de > resultados. > > > > Espero no haberme extendido demasiado. > > > > Gracias. > > > > Un saludo. > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Hola Ana, Ando un poco perdido sobre lo que has conseguido hasta ahora. Por lo que he visto te han ofrecido un par de alternativas, en una de ellas tendrías una lista y en la propuesta de Carlos tendrías un data.frame sobre el que aplicarías funciones para conseguir nuevos parámetros. Mi experiencia es que las dos alternativas salvo que tengas unos requisitos de tiempos de respuesta muy exigentes son equivalentes. Creo que te sería de más interés primero conseguir lo que buscas y luego ver si puedes optimizar el tiempo de respuesta. Si puedes dar algún detalle (incluyendo algún conjunto de datos) del punto en el que te encuentras, ayudaría en que te pudiésemos ofrecer varias alternativas... Saludos, Carlos Ortega www.qualityexcellence.es El 11 de marzo de 2012 16:07, Ana Pérez V. <anapv78@yahoo.es> escribió:> Hola, Javier: > > Sí, pero ¿cómo creo esa tabla y cómo le aplico mis funciones para la > obtención de nuevos parámetros?. > > Gracias. > > --- El dom, 11/3/12, Marcuzzi, Javier Rubén < > javier.ruben.marcuzzi@gmail.com> escribió: > > > De: Marcuzzi, Javier Rubén <javier.ruben.marcuzzi@gmail.com> > Asunto: Re: [R-es] Tabla desnormalizada > Para: "Ana Pérez V." <anapv78@yahoo.es>, "Carlos J. Gil Bellosta" < > cgb@datanalytics.com> > CC: r-help-es@r-project.org > Fecha: domingo, 11 de marzo, 2012 15:01 > > > Ana, del correo de Carlos: > > De todos modos, igual sería más sencillo crear una tabla > "desnormalizada" donde tuvieses las columnas > > nombre, serie, periodo > > serie se repetiría tantas veces como periodo y nombre tantas como > series-periodo. Ej.: > > carlos serie1 periodo1 > carlos serie1 periodo2 > carlos serie2 periodo1 > carlos serie2 periodo2 > > -----Mensaje original----- From: Ana Pérez V. > Sent: Sunday, March 11, 2012 8:13 AM > To: Carlos J. Gil Bellosta > Cc: r-help-es@r-project.org > Subject: [R-es] Tabla desnormalizada > > Hola: > > Por favor, ¿alguien me puede explicar cómo creo esa tabla desnormalizada a > la que alude Carlos y cómo la recorro?. > > Gracias. > > Saludos, > Ana > > --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78@yahoo.es> > CC: "r-help-es@r-project.org" <r-help-es@r-project.org> > Fecha: miércoles, 7 de marzo, 2012 21:02 > > > Bueno, reutilizando los tres pasos que te indicaba en el correo, previo, > > > 1) Parte de una función simple que, a partir de una serie y periodo > > calcule tu parámetro de interés. > > 2) Crea una función que aplique (1) a una serie de periodos > > (seguramente, un sapply de la anterior). > > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > > lectura de series y de periodos). > > lo que deberías hacer es: > > a) Que (2) capturase (¿en un vector?) los parámetros calculados en > (1). La función sapply lo hace automáticamente. > b) La función (2) los devuelve al nivel superior (en el return). > c) La función que aparece en (3) añade a su argumento (el bloque de > información del sujeto) la salida de (2). > > La salida del último lapply sería una lista con campos sujeto, serie, > periodo, parámetros (y la longitud de periodo y parámetros sería > igual). > > De todos modos, igual sería más sencillo crear una tabla > "desnormalizada" donde tuvieses las columnas > > nombre, serie, periodo > > serie se repetiría tantas veces como periodo y nombre tantas como > series-periodo. Ej.: > > carlos serie1 periodo1 > carlos serie1 periodo2 > carlos serie2 periodo1 > carlos serie2 periodo2 > > Podrías recorrer esa estructura de datos fácilmente y crear una última > columna de parámetros. Igual te resulta más sencillo plantear tu > problema así (en lugar de recorrer un árbol). > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78@yahoo.es> escribió: > > > > Hola: > > > > Gracias, Carlos. Me has iluminado. > > > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > > serie y período le aplico una función cuyo resultado debo utilizar para > un > > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la > serie, > > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > > interesaría que ese valor obtenido que voy a necesitar me quedase > > incorporado en la lista de partida, esto es, dentro de cada componente > > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > > > Gracias. > > > > Saludos > > Ana > > > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> > > escribió: > > > > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com> > > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > > resultados a partir de un list > > Para: "Ana Pérez V." <anapv78@yahoo.es> > > CC: "r-help-es@r-project.org" <r-help-es@r-project.org> > > Fecha: martes, 6 de marzo, 2012 14:35 > > > > > > Hola, ¿qué tal? > > > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > > abajo para arriba: > > > > 1) Parte de una función simple que, a partir de una serie y periodo > > calcule tu parámetro de interés. > > 2) Crea una función que aplique (1) a una serie de periodos > > (seguramente, un sapply de la anterior). > > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > > lectura de series y de periodos). > > > > Y aplícala a tu lista de sujetos con un lapply. > > > > Un saludo, > > > > Carlos J. Gil Bellosta > > http://www.datanalytics.com > > > > > > > > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es> > escribió: > > > Hola: > > > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > > información relativa a un sujeto (Pablo y Carlos). > > > > > > lSujetos <- list() > > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > > > A continuación, leo las series temporales correspondientes a cada > > > individuo. En este caso leo, para cada individuo, las series > > > correspondientes a las columnas de las posiciones 6, 7 y 8 en el > > fichero: > > > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > > funciones para obtener diversos parámetros. > > > > > > Un ejemplo: > > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > > > Pues bien: exactamente esos resultados no los debo generar para cada > > > serie, sino para cada serie y período, pudiendo existir más de un > > período > > > (supongamos 5 períodos); de tal modo que debo volcar en fichero una > > tabla de > > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número > de > > > individuos (en este caso N=2). > > > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > > > meter en juego al vector de posibles períodos, y a la manera de > aplicar > las > > > funciones pensando en que el objetivo es mostrar esa tabla de > > resultados. > > > > > > Espero no haberme extendido demasiado. > > > > > > Gracias. > > > > > > Un saludo. > > > [[alternative HTML version deleted]] > > > > > > > > > _______________________________________________ > > > R-help-es mailing list > > > R-help-es@r-project.org > > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > [[alternative HTML version deleted]] > > > > > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Estimada Ana El como llegar a una tabla depende de como están organizados sus datos, por ejemplo si es a partir de una base de datos, donde hay id, se puede hacer una consulta mezclando tablas, es relativamente sencillo, digamos que es un problema de base de datos. Cuestión de minutos. En cambio, si usted está en un caso como me tocó a mi, donde los datos son archivos xls, todo de buena voluntad pero con información mal almacenada, en una oportunidad me llevo una semana poder crear mis tablas, pero no siempre pude, hay trabajos que "perdí" porque fue imposible acomodar los datos. No hay receta, todo depende de cada caso en particular. Yo llevo más de 2 años acomodando una base de datos para luego procesarla en R, y la estoy realizando por necesidad ante los datos de mala calidad, aunque todos dicen que sus datos son buenos, que el software x es de lo mejor... Teniendo datos concretos sobre su problema, algunos de la lista podemos aportar alternativas. Javier On 11/03/12 12:07, Ana Pérez V. wrote:> Hola, Javier: > Sí, pero ¿cómo creo esa tabla y cómo le aplico mis funciones para la > obtención de nuevos parámetros?. > Gracias. > > --- El *dom, 11/3/12, Marcuzzi, Javier Rubén > /<javier.ruben.marcuzzi@gmail.com>/* escribió: > > > De: Marcuzzi, Javier Rubén <javier.ruben.marcuzzi@gmail.com> > Asunto: Re: [R-es] Tabla desnormalizada > Para: "Ana Pérez V." <anapv78@yahoo.es>, "Carlos J. Gil Bellosta" > <cgb@datanalytics.com> > CC: r-help-es@r-project.org > Fecha: domingo, 11 de marzo, 2012 15:01 > > Ana, del correo de Carlos: > > De todos modos, igual sería más sencillo crear una tabla > "desnormalizada" donde tuvieses las columnas > > nombre, serie, periodo > > serie se repetiría tantas veces como periodo y nombre tantas como > series-periodo. Ej.: > > carlos serie1 periodo1 > carlos serie1 periodo2 > carlos serie2 periodo1 > carlos serie2 periodo2 > > -----Mensaje original----- From: Ana Pérez V. > Sent: Sunday, March 11, 2012 8:13 AM > To: Carlos J. Gil Bellosta > Cc: r-help-es@r-project.org > <http://es.mc298.mail.yahoo.com/mc/compose?to=r-help-es@r-project.org> > Subject: [R-es] Tabla desnormalizada > > Hola: > > Por favor, ¿alguien me puede explicar cómo creo esa tabla > desnormalizada a la que alude Carlos y cómo la recorro?. > > Gracias. > > Saludos, > Ana > > --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com > <http://es.mc298.mail.yahoo.com/mc/compose?to=cgb@datanalytics.com>> > escribió: > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com > <http://es.mc298.mail.yahoo.com/mc/compose?to=cgb@datanalytics.com>> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78@yahoo.es > <http://es.mc298.mail.yahoo.com/mc/compose?to=anapv78@yahoo.es>> > CC: "r-help-es@r-project.org > <http://es.mc298.mail.yahoo.com/mc/compose?to=r-help-es@r-project.org>" > <r-help-es@r-project.org > <http://es.mc298.mail.yahoo.com/mc/compose?to=r-help-es@r-project.org>> > Fecha: miércoles, 7 de marzo, 2012 21:02 > > > Bueno, reutilizando los tres pasos que te indicaba en el correo, > previo, > > > 1) Parte de una función simple que, a partir de una serie y periodo > > calcule tu parámetro de interés. > > 2) Crea una función que aplique (1) a una serie de periodos > > (seguramente, un sapply de la anterior). > > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > > lectura de series y de periodos). > > lo que deberías hacer es: > > a) Que (2) capturase (¿en un vector?) los parámetros calculados en > (1). La función sapply lo hace automáticamente. > b) La función (2) los devuelve al nivel superior (en el return). > c) La función que aparece en (3) añade a su argumento (el bloque de > información del sujeto) la salida de (2). > > La salida del último lapply sería una lista con campos sujeto, serie, > periodo, parámetros (y la longitud de periodo y parámetros sería > igual). > > De todos modos, igual sería más sencillo crear una tabla > "desnormalizada" donde tuvieses las columnas > > nombre, serie, periodo > > serie se repetiría tantas veces como periodo y nombre tantas como > series-periodo. Ej.: > > carlos serie1 periodo1 > carlos serie1 periodo2 > carlos serie2 periodo1 > carlos serie2 periodo2 > > Podrías recorrer esa estructura de datos fácilmente y crear una última > columna de parámetros. Igual te resulta más sencillo plantear tu > problema así (en lugar de recorrer un árbol). > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com <http://www.datanalytics.com/> > > > El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78@yahoo.es > <http://es.mc298.mail.yahoo.com/mc/compose?to=anapv78@yahoo.es>> > escribió: > > > > Hola: > > > > Gracias, Carlos. Me has iluminado. > > > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que > a cada > > serie y período le aplico una función cuyo resultado debo > utilizar para un > > cálculo posterior; es decir, el cálculo posterior tiene en > cuenta la serie, > > el período y el valor obtenido en el cálculo previo. Por tal > motivo, me > > interesaría que ese valor obtenido que voy a necesitar me quedase > > incorporado en la lista de partida, esto es, dentro de cada > componente > > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > > > Gracias. > > > > Saludos > > Ana > > > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com > <http://es.mc298.mail.yahoo.com/mc/compose?to=cgb@datanalytics.com>> > > escribió: > > > > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com > <http://es.mc298.mail.yahoo.com/mc/compose?to=cgb@datanalytics.com>> > > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > > resultados a partir de un list > > Para: "Ana Pérez V." <anapv78@yahoo.es > <http://es.mc298.mail.yahoo.com/mc/compose?to=anapv78@yahoo.es>> > > CC: "r-help-es@r-project.org > <http://es.mc298.mail.yahoo.com/mc/compose?to=r-help-es@r-project.org>" > <r-help-es@r-project.org > <http://es.mc298.mail.yahoo.com/mc/compose?to=r-help-es@r-project.org>> > > Fecha: martes, 6 de marzo, 2012 14:35 > > > > > > Hola, ¿qué tal? > > > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > > abajo para arriba: > > > > 1) Parte de una función simple que, a partir de una serie y periodo > > calcule tu parámetro de interés. > > 2) Crea una función que aplique (1) a una serie de periodos > > (seguramente, un sapply de la anterior). > > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > > lectura de series y de periodos). > > > > Y aplícala a tu lista de sujetos con un lapply. > > > > Un saludo, > > > > Carlos J. Gil Bellosta > > http://www.datanalytics.com <http://www.datanalytics.com/> > > > > > > > > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es > <http://es.mc298.mail.yahoo.com/mc/compose?to=anapv78@yahoo.es>> > escribió: > > > Hola: > > > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > > información relativa a un sujeto (Pablo y Carlos). > > > > > > lSujetos <- list() > > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, > colVars=c(6,7,8)) > > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, > colVars=c(6,7,8)) > > > > > > A continuación, leo las series temporales correspondientes a cada > > > individuo. En este caso leo, para cada individuo, las series > > > correspondientes a las columnas de las posiciones 6, 7 y 8 en > el > fichero: > > > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > > principales y cada uno tiene 3 subelementos (uno por serie > temporal). > > > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > > funciones para obtener diversos parámetros. > > > > > > Un ejemplo: > > > resul <- lapply(series, function(x) lapply (x, > AnalisisMacroscopico)) > > > > > > Pues bien: exactamente esos resultados no los debo generar > para cada > > > serie, sino para cada serie y período, pudiendo existir más de > un > período > > > (supongamos 5 períodos); de tal modo que debo volcar en > fichero una > tabla de > > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el > número de > > > individuos (en este caso N=2). > > > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la > manera de > > > meter en juego al vector de posibles períodos, y a la manera > de aplicar > las > > > funciones pensando en que el objetivo es mostrar esa tabla de > > resultados. > > > > > > Espero no haberme extendido demasiado. > > > > > > Gracias. > > > > > > Un saludo. > > > [[alternative HTML version deleted]] > > > > > > > > > _______________________________________________ > > > R-help-es mailing list > > > R-help-es@r-project.org > <http://es.mc298.mail.yahoo.com/mc/compose?to=R-help-es@r-project.org> > > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > [[alternative HTML version deleted]] > > > > > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > <http://es.mc298.mail.yahoo.com/mc/compose?to=R-help-es@r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Hola, ¿qué tal?. Gracias a todos por vuestras sugerencias y ayuda. Carlos, finalmente he conseguido llevarlo a cabo por ambas vías, y el tiempo de respuesta es similar. (Mi duda de los mails anteriores derivaba de que yo estaba descartando que la tabla desnormalizada se refiriese a un data.frame, y no hallaba una estructura de datos adecuada. Todo aclarado!!. Un saludo. Ana --- El dom, 11/3/12, Carlos Ortega <cof@qualityexcellence.es> escribió: De: Carlos Ortega <cof@qualityexcellence.es> Asunto: Re: [R-es] Tabla desnormalizada Para: "Ana Pérez V." <anapv78@yahoo.es> CC: r-help-es@r-project.org Fecha: domingo, 11 de marzo, 2012 17:50 Hola Ana, Ando un poco perdido sobre lo que has conseguido hasta ahora. Por lo que he visto te han ofrecido un par de alternativas, en una de ellas tendrías una lista y en la propuesta de Carlos tendrías un data.frame sobre el que aplicarías funciones para conseguir nuevos parámetros. Mi experiencia es que las dos alternativas salvo que tengas unos requisitos de tiempos de respuesta muy exigentes son equivalentes. Creo que te sería de más interés primero conseguir lo que buscas y luego ver si puedes optimizar el tiempo de respuesta. Si puedes dar algún detalle (incluyendo algún conjunto de datos) del punto en el que te encuentras, ayudaría en que te pudiésemos ofrecer varias alternativas... Saludos, Carlos Ortega www.qualityexcellence.es El 11 de marzo de 2012 16:07, Ana Pérez V. <anapv78@yahoo.es> escribió: Hola, Javier: Sí, pero ¿cómo creo esa tabla y cómo le aplico mis funciones para la obtención de nuevos parámetros?. Gracias. --- El dom, 11/3/12, Marcuzzi, Javier Rubén <javier.ruben.marcuzzi@gmail.com> escribió: De: Marcuzzi, Javier Rubén <javier.ruben.marcuzzi@gmail.com> Asunto: Re: [R-es] Tabla desnormalizada Para: "Ana Pérez V." <anapv78@yahoo.es>, "Carlos J. Gil Bellosta" <cgb@datanalytics.com> CC: r-help-es@r-project.org Fecha: domingo, 11 de marzo, 2012 15:01 Ana, del correo de Carlos: De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 -----Mensaje original----- From: Ana Pérez V. Sent: Sunday, March 11, 2012 8:13 AM To: Carlos J. Gil Bellosta Cc: r-help-es@r-project.org Subject: [R-es] Tabla desnormalizada Hola: Por favor, ¿alguien me puede explicar cómo creo esa tabla desnormalizada a la que alude Carlos y cómo la recorro?. Gracias. Saludos, Ana --- El mié, 7/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> escribió: De: Carlos J. Gil Bellosta <cgb@datanalytics.com> Asunto: Re: [R-es] Buscando la solución más eficiente para generar resultados a partir de un list Para: "Ana Pérez V." <anapv78@yahoo.es> CC: "r-help-es@r-project.org" <r-help-es@r-project.org> Fecha: miércoles, 7 de marzo, 2012 21:02 Bueno, reutilizando los tres pasos que te indicaba en el correo, previo,> 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos).lo que deberías hacer es: a) Que (2) capturase (¿en un vector?) los parámetros calculados en (1). La función sapply lo hace automáticamente. b) La función (2) los devuelve al nivel superior (en el return). c) La función que aparece en (3) añade a su argumento (el bloque de información del sujeto) la salida de (2). La salida del último lapply sería una lista con campos sujeto, serie, periodo, parámetros (y la longitud de periodo y parámetros sería igual). De todos modos, igual sería más sencillo crear una tabla "desnormalizada" donde tuvieses las columnas nombre, serie, periodo serie se repetiría tantas veces como periodo y nombre tantas como series-periodo. Ej.: carlos serie1 periodo1 carlos serie1 periodo2 carlos serie2 periodo1 carlos serie2 periodo2 Podrías recorrer esa estructura de datos fácilmente y crear una última columna de parámetros. Igual te resulta más sencillo plantear tu problema así (en lugar de recorrer un árbol). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 7 de marzo de 2012 20:50, Ana Pérez V. <anapv78@yahoo.es> escribió:> > Hola: > > Gracias, Carlos. Me has iluminado. > > Ahora quería ir un paso más allá. Vamos a ver... Supongamos que a cada > serie y período le aplico una función cuyo resultado debo utilizar para un > cálculo posterior; es decir, el cálculo posterior tiene en cuenta la serie, > el período y el valor obtenido en el cálculo previo. Por tal motivo, me > interesaría que ese valor obtenido que voy a necesitar me quedase > incorporado en la lista de partida, esto es, dentro de cada componente > (junto con la serie y el período). ¿Cómo puedo lograrlo?. > > Gracias. > > Saludos > Ana > > --- El mar, 6/3/12, Carlos J. Gil Bellosta <cgb@datanalytics.com> > escribió: > > > De: Carlos J. Gil Bellosta <cgb@datanalytics.com> > Asunto: Re: [R-es] Buscando la solución más eficiente para generar > resultados a partir de un list > Para: "Ana Pérez V." <anapv78@yahoo.es> > CC: "r-help-es@r-project.org" <r-help-es@r-project.org> > Fecha: martes, 6 de marzo, 2012 14:35 > > > Hola, ¿qué tal? > > Te recomendaría que, en lugar de ir de arriba para abajo, fueses de > abajo para arriba: > > 1) Parte de una función simple que, a partir de una serie y periodo > calcule tu parámetro de interés. > 2) Crea una función que aplique (1) a una serie de periodos > (seguramente, un sapply de la anterior). > 3) Crea una función que aplique (2) a un sujeto (posiblemente, una > lectura de series y de periodos). > > Y aplícala a tu lista de sujetos con un lapply. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > > > > El día 6 de marzo de 2012 13:41, Ana Pérez V. <anapv78@yahoo.es> escribió: > > Hola: > > > > Tengo una lista de 2 elementos, cada uno de los cuales contiene > > información relativa a un sujeto (Pablo y Carlos). > > > > lSujetos <- list() > > lSujetos[[1]] <- list(nomfich="Pablo", colTime=5, colVars=c(6,7,8)) > > lSujetos[[2]] <- list(nomfich="Carlos", colTime=5, colVars=c(6,7,8)) > > > > A continuación, leo las series temporales correspondientes a cada > > individuo. En este caso leo, para cada individuo, las series > > correspondientes a las columnas de las posiciones 6, 7 y 8 en el > fichero: > > > > misSeries <- lapply(lSujetos, leeSeries) > > > > siendo leeSeries la función que se encarga de recoger esas series. > > > > Como consecuencia de lo anterior, en "misSeries" tengo 2 elementos > > principales y cada uno tiene 3 subelementos (uno por serie temporal). > > > > Pues bien, sobre esta variable (misSeries) debo aplicar diferentes > > funciones para obtener diversos parámetros. > > > > Un ejemplo: > > resul <- lapply(series, function(x) lapply (x, AnalisisMacroscopico)) > > > > Pues bien: exactamente esos resultados no los debo generar para cada > > serie, sino para cada serie y período, pudiendo existir más de un > período > > (supongamos 5 períodos); de tal modo que debo volcar en fichero una > tabla de > > resultados que tenga exactamente N*3*5 = 30 filas, siendo N el número de > > individuos (en este caso N=2). > > > > ¿Cuál es la manera más eficiente de hacerlo?. Me refiero a la manera de > > meter en juego al vector de posibles períodos, y a la manera de aplicar > las > > funciones pensando en que el objetivo es mostrar esa tabla de > resultados. > > > > Espero no haberme extendido demasiado. > > > > Gracias. > > > > Un saludo. > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]