Javier,

Mi anterior intento deberia haber sido

res <- do.call(c, with(d, tapply(med, ind, function(x) c(NA, diff(x)))))
d[res != 0, ]

Aunque a'un no me queda claro si solo quieres guardar la primera observacion
por individuo o aquellas que cumplan el criterio de no ser iguales a la
inmediatamente anterior. Si lo que en realidad buscas es lo segundo,
entonces lo que ahora te env'io funcionar'a mejor. En caso de que sea lo
segundo, una variaci'on de lo anterior o una implementaci'on con aggregate()
podr'ias hacerlo.

Saludos,

--JIV


2010/3/30 Jorge Ivan Velez <>

> Buenos dias Javier,
>
> Te sugiero lo siguiente:
>
> # datos
> ind <- rep(c(1, 2, 3), c(3, 2, 2))
> fecha <- ind
> med <- c(4, 2, 1, 3, 4, 8, 5)
> d <- data.frame(ind, fecha, med)
> d
>   ind fecha med
> 1   1     1   4
> 2   1     1   2
> 3   1     1   1
> 4   2     2   3
> 5   2     2   4
> 6   3     3   8
> 7   3     3   5
>
> # resultado
> # -- por individuo, toma las medidas realizadas
> # -- y luego determina las diferencias entre ellas
> # -- finalmente reporta el resultado (es una lista)
> # -- luego hacemos do.call(c,...) para concatenarla
> # -- finalmente seleccionamos aquellas diferencia cero
> res <- with(d, tapply(med, ind, function(x) c(0, diff(x))))
> res
> $`1`
> [1]  0 -2 -1
>
> $`2`
> [1] 0 1
>
> $`3`
> [1]  0 -3
>
> # seleccion
> d[do.call(c, res) == 0, ]
>   ind fecha med
> 1   1     1   4
> 4   2     2   3
> 6   3     3   8
>
> Espero sea de utilidad,
>
>                        Jorge Ivan Velez
>
>
> 2010/3/30 Javier Marcuzzi <>
>
>> Hola
>>
>>
>>
>> Me encuentro con un problema al manejar unos datos, estos son tomados de
>> una
>> base de datos que tiene algunos errores, importaciones de programas
>> viejos,
>> etc.
>>
>>
>>
>> Básicamente son dos tablas, la primer tabla identifica al individuo, esta
>> tabla tiene valores mal ingresados.
>>
>> La segunda tabla tiene mediciones.
>>
>> Al buscar desde la tabla de mediciones a los individuos solo obtengo solo
>> los individuos con mediciones, eliminando de esta forma los individuos que
>> no aportan datos encontrándose entre estos muchos errores.
>>
>>
>>
>> El resultado es aproximadamente
>>
>>
>>
>> Individuo 1         fecha medición 1             medición
>>
>> Individuo 1         fecha medición 2             medición
>>
>> Individuo 1         fecha medición 3             medición
>>
>> Individuo 2         fecha medición 1             medición
>>
>> Individuo 2         fecha medición 2             medición
>>
>> Individuo 3         fecha medición 1             medición
>>
>> Individuo 3         fecha medición 2             medición
>>
>>
>>
>> Yo necesito la tabla como la expresada como otra con esta forma
>>
>>
>>
>> Individuo 1
>>
>> Individuo 2
>>
>> Individuo 3
>>
>>
>>
>> ¿Cómo puedo hacer para crear un data.frame que elimine los renglones
>> 2,3,5,7, es decir los que tienen un valor igual al valor del renglón
>> anterior no se tienen en cuenta, y si el valor es distinto debe guardarse
>> en
>> un data.frame? Lógicamente son más datos, unos 240.000 registros, no me es
>> fácil depurarlos a mano.
>>
>>
>>
>>
>>
>>
>>        [[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]]

