比较并合并R中的两个文件

时间:2013-12-06 22:32:47

标签: r merge compare

我有两个文件

文件1:

start,end,expr,name

10,20,0.2,A

1,5,0.6,B

23,45,0.8,A

89,98,0.89,C

file2的:

start,end,expr 

18,19,0.6

11,16,0.9

16,18,0.78

1,2,0.23

3,5,0.88

我想将这两个文件进行比较和合并。如果file2的开始和结束位于file1的开始和结束之内,则计算并合并file2数据的mean和std。

例如,

在file2中,前三行都位于(10,20)内,因此在这三行中计算expr的mean和std,然后将mean和std作为file1的第5和第6列

start,end,expr,name, mean(file2), std(file2)

10,20,0.2,A,0.76,0.151

1,5,0.6,B,0.555,0.4596

23,45,0.8,A

89,98,0.89,C

有没有人知道如何通过使用R实现我的目标?非常感谢。 实际数据要大得多,这里只是数据的一个例子。

1 个答案:

答案 0 :(得分:0)

希望此代码示例有帮助

file1 <- read.csv('file1.csv',header=TRUE)
file2 <- read.csv('file2.csv',header=TRUE)

for(i in seq(nrow(file1))){
  ## tf defines the subset of file2 used for each line in file1
  tf <- file2$start >= file1$start[i] & file2$end <= file1$end[i]
  file1$mean[i] <- mean(file2$expr[tf])
  file1$sd[i] <- sd(file2$expr[tf])
}

write.csv(file1, file='result.csv', row.names=FALSE, quote=FALSE)