Cómo calcular la mediana de varios archivos divididos generados a partir de un archivo grande

Cómo calcular la mediana de varios archivos divididos generados a partir de un archivo grande

Quiero calcular la mediana del conjunto de datos de mi mouse (nombre de archivo = prueba). Este conjunto de datos es muy grande, así que lo dividí en varios archivos (n=5) con este comando:

 split -l$((`wc -l < test`/5)) test test.split -da 4

Después de este paso, ahora tengo 5 archivos test.split0000, test.split0001, test.split0002, test.split0003, test.split0004.

Utilizo el siguiente script para calcular la mediana.

#!/usr/bin/R

data <- read.table("Input_file", row.names=1, header=T)

M <- apply(data, 1, median) 

write.table(M, "Final_median_mousegene", quote=FALSE, sep="\t", row.names=TRUE)

q()

Pero ahora tengo varios archivos, por lo que quiero ejecutar un único script que funcione en conjunto en todos los archivos divididos.

Gracias

Respuesta1

"La mediana es el punto medio, central o intermedio de un grupo de números. Cuando ordenas un conjunto de números de menor a mayor, la mediana es el número directamente en el medio. El cincuenta por ciento de los valores de un conjunto ocurren debajo del la mediana y el 50% están por encima de la mediana".

Por lo tanto, no use R; simplemente ordene el archivo grande, el valor medio es el valor mediano.

Respuesta2

 #!/usr/bin/R

 files <- list.files(pattern = "test.split*")

 for (i in 1:length(files)){
 data <- read.table(files[i], header=F, row.names = 1)
 M <- apply(data, 1, median) 
 write.table(M, paste0("Median_", files[i]), quote=FALSE, sep="\t", 
 row.names=TRUE)
 }
q()

información relacionada