我想計算我的滑鼠資料集的中位數(檔案名稱=測試)。該資料集非常大,因此我使用以下命令將資料集拆分為多個檔案(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% 的值出現在低於中位數,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()