我有两个文件
文件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
文件2:
start,end,expr
18,19,0.6
11,16,0.9
16,18,0.78
1,2,0.23
3,5,0.88
我想把这两个文件比较合并在一起。如果文件2的开始和结束位于文件1的开始和结尾,则计算并合并文件2数据的平均值和std。
例如,
在文件2中,前三行都位于(10,20)内,因此计算这三行中expr的平均值和std,然后将平均值和std作为文件1 的第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来实现我的目标吗?非常感谢。实际数据要大得多,这里只是数据的一个例子。
希望这个代码示例能帮助
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)