[R-es] Perfiles longitudinales con eje de abscisas adaptado a cada individuo

Francisco Javier iterador10 en hotmail.com
Mie Feb 1 20:25:43 CET 2017


Buenas tardes a todo el mundo,


Sirva como ejemplo el siguiente data frame con datos longitudinales de 2 individuos:

dt <- data.frame(id = rep(c(1,2), c(3,5)),

        edad = c(50,51,52,43,44,45,46,47),

        valor = c(220,450,540,320,570,200,700,100))


Querría representar (sin recurrir a ningún package) el perfil de los 2 individuos de modo que en cada eje de abscisas:
a) La primera edad de cada individuo es su primera edad con valor (edades enteras anuales).
b) Para cada id hayan el mismo número de ticks, que será igual al número de mediciones del individuo con más valores (id=2 con 5 valores)

El código siguiente hace "casi" lo que deseo, pero el inconveniente es que el eje de abscisas que queda escrito siempre va desde 1 hasta 5, y lo

que querría es que en id=1 fuese {50,51,52,53,54} (aunque no haya datos en las edades 53 y 54), mientras que en id=2 debería de poner {43,44,45,46,47}.


par(mfrow = c(2, 1), las = 1)

for(i in 1:length(unique(dt$id))) {
   kat <- factor(dt$id, labels = 1:length(unique(dt$id)))
   plot(dt$valor[kat == i],
   pch = 16, xaxt = "n", xlab ="", ylab = "", main = "",
   xlim = c(1, max(table(dt$id))), ylim = c(0, max(dt$valor)))
   axis(1, at = 1:max(table(dt$id)))
   mtext("edad", side = 1, line = 2.5)
   mtext( bquote( .(unique(dt$id)[i])), side = 3, line = 0.5)
 }


Muchas gracias por cualquier ayuda!

	[[alternative HTML version deleted]]



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