列意味着多个文件

时间:2013-11-01 08:05:09

标签: r

我有多个文件包含列中的值(每个文件的列都相同)。现在,我想计算所有文件中每列的均值或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="#")

我如何从这里继续?

1 个答案:

答案 0 :(得分: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"]