2013-12-06 3 views
-1

У меня есть два файлаСравнить и объединить два файла в R

file1:

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 

Я хочу, чтобы сравнить и объединить эти два файла вместе. Если начало и конец файла2 находится в начале и в конце файла1, тогда вычисляйте и включайте данные среднего и std файла2.

Например,

в file2, первые три строки все размещает в пределах (10, 20), таким образом рассчитать среднее и станд выраж в этих трех строк, а затем положить среднее и станд как 5-й и 6-й столбцы файла1

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

обеспечивают пример кода, что вы пробовали до сих пор. – Plasmarob

+0

Еще одна вещь: фактические данные намного больше, вот только пример. Я ценю, если кто-нибудь может мне помочь – user2917442

ответ

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) 
+0

Большое вам спасибо за помощь. Это именно то, что мне нужно. при запуске этого кода необходимо обновить больше: tf <-c (file2 $ start> = file1 $ start [i] & file2 $ end <= file1 $ end [i]). Я думаю, что он должен быть помещен в вектор, иначе R скажет мне, что tf не определено. – user2917442

Смежные вопросы