Tengo un conjunto de datos relativamente grande (16,000+ x ~ 31). En otras palabras, es lo suficientemente grande como para no manipularlo línea por línea en Excel. Los datos están en esta forma:Cómo agregar una columna de conteo basada en valores en otras columnas en R
block site day X1 X2
1 1 1 0.4 5.1
1 1 2 0.8 1.1
1 1 3 1.1 4.2
1 2 1 ... ...
1 2 2
1 2 3
2 3 1
2 3 2
2 3 3
2 4 1
2 4 2
2 4 3
Como se puede ver, el recuento sitio es continua, pero me gustaría una columna en la que el número de sitio restablece con cada bloque. Por ejemplo, me gustaría algo como esto a continuación:
block site day X1 X2 site2
1 1 1 0.4 5.1 1
1 1 2 0.8 1.1 1
1 1 3 1.1 4.2 1
1 2 1 ... ... 2
1 2 2 2
1 2 3 2
2 3 1 1
2 3 2 1
2 3 3 1
2 4 1 2
2 4 2 2
2 4 3 2
Estaba pensando acerca del uso de la función R rle pero no estoy seguro si va a trabajar debido a complicaciones con día. De lo contrario, me gustaría probar algo como:
Data$site2 <- sequence(rle(Data$block)$lengths)
¿Alguien tiene alguna sugerencia para añadir un conteo de la columna (secuencia) el número de sitios dentro de cada bloque? Si ayuda, hay la misma cantidad de días (263) registrados para cada sitio, pero hay una cantidad diferente de sitios por bloque.
Gracias, esto funcionó perfectamente. He visto plyr antes pero nunca lo he usado. ddply es perfecto, en realidad tuve que dividir la matriz, usar la forma (= amplia) en días, aplicar el rle (sitio) y luego intentar remodelar (= largo). No sé si funcionaría, pero pensé que había alrededor de 1000 maneras más fáciles de hacerlo. Me gusta la solución dpdply. gracias de nuevo. – djhocking
Bueno, acabo de probar la opción ddply en un problema similar y funcionó perfectamente la primera vez – Ell