如何計算從一個大檔案產生的多個分割檔案的中位數

如何計算從一個大檔案產生的多個分割檔案的中位數

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

相關內容