Я хочу вычислить медиану для моего набора данных по мышам (имя файла = 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()