2013-11-01 42 views
0

我有多个文件包含列中的值(列对每个文件都是相同的)。现在我想计算所有文件中每列的平均值或sd值,例如output_value1 = mean(file1_value1, file2_value1, ..., filen_value1)。我有很多文件,所以手动做这件事显然不是一种选择。列意味着多个文件

如何计算例如新表中的平均值如下例所示?

# INPUT 
################ 

file1.txt 
id, value1, value2 
1, 10,  100 
2, 5,  25 
3, 10,  50 

file2.txt 
id, value1, value2 
1, 2,  200 
2, 7,  15 
3, 10,  50 

file3.txt 
id, value1, value2 
1, 3,  30 
2, 6,  5 
3, 10,  100 

# OUTPUT 
################ 

id value1 value2 
1 5  110 
2 6  15 
3 10  66.6 

我已经设法通过使用

Files <- Sys.glob("*.txt") 
m <- lapply(Files, read.csv, header=TRUE, comment.char="#") 

我如何去从这里读取数据?

+0

'输出[1 “值2”]'是110,我想。 – TheComeOnMan

+0

@Codoremifa谢谢,这就是为什么我使用像R这样的工具;) –

回答

2

使用data.table库:

library(data.table) 

# reading each file as a data.table. Bonus - fread is much faster than read.csv 
m <- lapply(Files, fread, header=TRUE, comment.char="#") 

#compiling into one dataset 
m2 <- rbindlist(m) 

#calculating mean by id over each column 
m2[,lapply(.SD,mean),by="id"]