Tengo un data.frame en el que cada gen nombre se repite y contiene valores para 2 condiciones:Calcular la diferencia Transcurrirá pares de filas consecutivas en una trama de datos - R
df <- data.frame(gene=c("A","A","B","B","C","C"),
condition=c("control","treatment","control","treatment","control","treatment"),
count=c(10, 2, 5, 8, 5, 1),
sd=c(1, 0.2, 0.1, 2, 0.8, 0.1))
gene condition count sd
1 A control 10 1.0
2 A treatment 2 0.2
3 B control 5 0.1
4 B treatment 8 2.0
5 C control 5 0.8
6 C treatment 1 0.1
quiero para calcular si hay es un aumento o disminución en "conteo" después del tratamiento y los marca como tal y/o los subconjunta. Es decir (pseudocódigo):
for each unique(gene) do
if df[geneRow1,3]-df[geneRow2,3] > 0 then gene is "up"
else gene is "down"
Esto lo que debe ser similar en el extremo (las últimas columnas es opcional):
up-regulated
gene condition count sd regulation
B control 5 0.1 up
B treatment 8 2.0 up
down-regulated
gene condition count sd regulation
A control 10 1.0 down
A treatment 2 0.2 down
C control 5 0.8 down
C treatment 1 0.1 down
que se han bañado mi cerebro con esto, incluyendo jugar con ddply, y no he podido encontrar una solución - por favor, un desventurado biólogo.
Saludos.
¡Brillante, funcionó! Tenía la sensación de que podría ser parte de la respuesta, pero no creo que alguna vez se me ocurriera el reg.fun. Aclamaciones. – fridaymeetssunday
@krespim Y aquí hay un [benchmark] (http://stackoverflow.com/revisions/11463757/3) de agrupación de pares de filas que compara plyr con data.table. –