Cómo manejar más de múltiples conjuntos de datos de programación R?

votos
0

datos Ca <- corte (datos $ tiempo, rompe = seq (0, max (datos $ Tiempo) 400, 400))  por (datos $ oxitocina, cortes, media)

pero esto sólo funcionaría sólo para una persona de datos .... Pero tengo diez personas con sus propios datos de oxitocina tiempo y .... ¿Cómo puedo obtener los promedios de forma simultánea? También en lugar de tener este tipo de salida:

cuts: (0,400]
[1] 0.7
------------------------------------------------------------ 
cuts: (400,800]
[1] 0.805

¿Hay alguna manera de obtener una lista de esos recortes?

Publicado el 20/02/2013 a las 16:16
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Aquí hay una solución utilizando IRangesel paquete.

idxasume su formato de datos es Time, data, Time, data, ..., etc .. Por lo tanto, se crea índices 1,3,5,...ncol(df)-1.

ir1es los intervalos le gustaría que la media para. Es ancho es de 400. Se va de 0 a max (Tiempo) para cada columna Time (aquí las columnas 1 y 3).

ir2 es la columna de anchura de intervalo = 1 el tiempo correspondiente.

Entonces consigo la superposición de ir1la ir2, que básicamente me dice qué intervalos de solapamiento con IR1, IR2 (que queremos), de la que calcular la media y la salida de la data.frame.

idx <- seq(1, ncol(df), by=2)
o <- lapply(idx, function(i) {  
    ir1 <- IRanges(start=seq(0, max(df`i`), by=401), width=401)
    ir2 <- IRanges(start=df`i`, width=1)
    t <- findOverlaps(ir1, ir2)
    d <- data.frame(mean=tapply(df[[i+1]], queryHits(t), mean))
    cbind(as.data.frame(ir1), d)
})

> o
# `1`
#   start  end width      mean
# 1     0  400   401 0.6750000
# 2   401  801   401 0.8050000
# 3   802 1202   401 0.8750000
# 4  1203 1603   401 0.2285333

# `2`
#   start  end width    mean
# 1     0  400   401 0.73508
# 2   401  801   401 0.13408
# 3   802 1202   401 0.26408
# 4  1203 1603   401 1.06408
# 5  1604 2004   401 3.06408

Para cada Timecolumna, obtendrá una lista con los intervalos y media para ese intervalo.

Respondida el 20/02/2013 a las 16:52
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more