An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20110926/064ffdda/attachment.pl>
[R-es] funcion en data.frame
4 messages · Javier Marcuzzi, Jorge I Velez, Olivier Nuñez +1 more
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20110925/b6dc1cf8/attachment.pl>
O de manera equivalente : > tapply(datos$dias2,datos$persona,max) 1 2 3 4 5 5 10 13 14 16 o bien > tapply(datos$dias2,datos$persona,which.max) 1 2 3 4 5 5 5 3 1 2 -- ____________________________________ Olivier G. Nuñez Email: onunez en iberstat.es Tel : +34 663 03 69 09 Web: http://www.iberstat.es ____________________________________ El 26/09/2011, a las 5:13, Javier Rubén Marcuzzi escribió:
Hola
Nuevamente necesito ayuda de ustedes, en muy pocas oportunidades
escribà una función, dirÃa que no tengo experiencia al respecto.
Escribo el código en R (copiar y pegar) con los comentarios y
descripción de los datos.
Esperando que se entienda ...
#######################################################
# Descricion de los datos (en orden de columnas)
# 5 Personas que realizan una actividad,
# por cada vez que se realiza se la numera
# cada actividad numerada es realizada a x dias desde
# la columna dias2 es generada para no tener blancos (vacÃos)
persona<-c(1,1,1,1,1,2,2,2,2,2,3,3,3,4,5,5)
numeracion <-c(1,2,3,4,5,1,2,3,4,5,1,2,3,1,1,2)
dias <-c(1,3,4,6,9,2,4,6,7,9,2,5,8,3,5,8)
dias2 <- c(1:length(dias))
datos <- data.frame(persona, numeracion, dias, dias2)
datos
# descripción de lo que deberÃa realizar
# observar la columna dias2
# cambia el primer valor y los ultimos (15 y 16)
datos$dias2[datos$dias2 < max(datos$dias2)] <- datos$dias2[-1]
datos$dias2[datos$dias2 == max(datos$dias2)] <- NA
datos
# al observar las columnas dÃas y dÃas2 me es fácil restar
# entre ambas columnas para obtener la diferencia de tiempo
###########
# Mi problema
# lo descripto anteriormente debe tomar el valor maximo de cada
# persona, no el maximo de todo el data.frame
# (un max por persona) y (un [-1] por persona)
# intente vosas como:
# probar <- do.call(rbind, by(datos, datos$persona, datos$dias,
function(x){...
# todos intentos que no fueron correctos
# ¿Me explico? ¿Ideas?
[[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
Yo creo que te vendrÃa bien echarle un vistazo a http://www.jstatsoft.org/v40/i01 El artÃculo trata sobre un paquete, plyr, que está diseñado para implementar la estrategia "divide-aplica-combina": 1) Primero divides tu problema en trozos (¿por persona?) 2) Solucionas tu problema para cada trozo. 3) Aplicas la solución a cada trozo y recompones la estructura de datos deseada con los resultados. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 26 de septiembre de 2011 05:13, Javier Rubén Marcuzzi <javier.ruben.marcuzzi en gmail.com> escribió:
Hola
Nuevamente necesito ayuda de ustedes, en muy pocas oportunidades escribà una función, dirÃa que no tengo experiencia al respecto.
Escribo el código en R (copiar y pegar) con los comentarios y descripción de los datos.
Esperando que se entienda  ...
#######################################################
# Â Â Descricion de los datos (en orden de columnas)
# Â 5 Personas que realizan una actividad,
# Â por cada vez que se realiza se la numera
# Â cada actividad numerada es realizada a x dias desde
# Â la columna dias2 es generada para no tener blancos (vacÃos)
persona<-c(1,1,1,1,1,2,2,2,2,2,3,3,3,4,5,5)
numeracion <-c(1,2,3,4,5,1,2,3,4,5,1,2,3,1,1,2)
dias <-c(1,3,4,6,9,2,4,6,7,9,2,5,8,3,5,8)
dias2 <- c(1:length(dias))
datos <- data.frame(persona, numeracion, dias, dias2)
datos
#   descripción de lo que deberÃa realizar
# Â Â observar la columna dias2
# Â Â cambia el primer valor y los ultimos (15 y 16)
datos$dias2[datos$dias2 < max(datos$dias2)] <- datos$dias2[-1]
datos$dias2[datos$dias2 == max(datos$dias2)] <- NA
datos
#  al observar las columnas dÃas y dÃas2 me es fácil restar
# Â entre ambas columnas para obtener la diferencia de tiempo
###########
# Â Mi problema
# Â lo descripto anteriormente debe tomar el valor maximo de cada
# Â persona, no el maximo de todo el data.frame
#  (un max por persona)  y   (un [-1] por persona)
# Â intente vosas como:
# Â probar <- do.call(rbind, by(datos, datos$persona, datos$dias, function(x){...
# Â todos intentos que no fueron correctos
#  ¿Me explico? ¿Ideas?
    [[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