Как рассчитать медиану для нескольких разделенных файлов, созданных из одного большого файла

Как рассчитать медиану для нескольких разделенных файлов, созданных из одного большого файла

Я хочу вычислить медиану для моего набора данных по мышам (имя файла = test). Этот набор данных очень большой, поэтому я разделил его на несколько файлов (n=5) с помощью этой команды:

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

После этого шага у меня теперь есть 5 файлов test.split0000, test.split0001, test.split0002, test.split0003, test.split0004.

Я использую следующий скрипт для расчета медианы

#!/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()

Но теперь у меня есть несколько файлов, поэтому я хочу запустить один скрипт, который будет работать одновременно со всеми разделенными файлами.

Спасибо

решение1

«Медиана — это середина, центр или средняя точка группы чисел. Если вы упорядочиваете набор чисел от наименьшего к наибольшему, медианой будет число, расположенное прямо посередине. Пятьдесят процентов значений в наборе находятся ниже медианы, а 50% — выше медианы».

Поэтому не используйте R — просто отсортируйте большой файл, значение посередине будет медианным.

решение2

 #!/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()

Связанный контент