我有两个文件
文件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实现我的目标?非常感谢。 实际数据要大得多,这里只是数据的一个例子。
答案 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)