2014-10-28 5 views
1

sampleID, 염색체, 시작 및 정지 및 평균 점수가있는 데이터 프레임이 있습니다. 각 sampleID의 start.pos와 end.pos의 모든 가능한 조합으로 각 chrom의 각 sampleID에 대한 평균 점수를 결합하고자합니다. 따라서 각 염색체에 대해 가능한 모든 start.pos 및 end.pos를 병합하고 모든 sampleID에 대해 각 조합에 대한 $ 평균 점수를 추가하십시오.데이터 프레임을 두 번 분할하고 열을 기준으로 병합

입력 :

 sampleID  chrom start.pos end.pos meancol 
1.1 0012102_A01  1   0 11194349 1 
1.4 0012102_A01  1 11194349 11492125 0 
1.5 0012102_A01  1 11492125 71442329 1 
1.9 0012102_A01  1 71442329 249250621 1 
1.13 0012102_A02  1   0 65493011 1 
1.92 0012102_A02  1 65493011 66164733 1 
1.102 0012102_A02  1 66164733 121347754 1 
1.52 0012102_A02  1 121347754 249250621 0 
1.14 0012102_A03  1   0 56384956 1 
1.83 0012102_A03  1 56384956 106266297 1 
1.73 0012102_A03  1 106266297 249250621 0 
1.15 0012102_A04  1   0 51484139 1 
1.27 0012102_A04  1 51484139 249250621 0 
2.1 0012102_A01  2   0 50000001 1 
2.2 0012102_A01  2 50000001 250000001 1 
2.3 0012102_A02  2   0 50000001 0 
2.7 0012102_A02  2 50000020 270000001 0 
2.18 0012102_A03  2   0 50000004 0 
2.19 0012102_A03  2 50000004 250000001 0 
1.15 0012102_A04  2   0 51484139 0 
1.27 0012102_A04  2 51484139 249250621 0 

출력 : 여기서 각 sampleID 모든 평균 점수는 각 염색체에 대한 모든 가능한 start.pos end.pos 및 조합에 추가되었다.

chrom start.pos end.pos meancol 
1   0 11194349 4 
1 11194349 11492125 3 
1 11492125 51484139 4 
1 51484139 56384956 3 
1 56384956 65493011 3 
1 65493011 66164733 1 
1 66164733 71442329 3 
1 71442329 106266297 2 
1 106266297 121347754 1 
1 121347754 249250621 1 
2   0 50000001 1 
2 50000001 50000004 0 
2 50000004 50000020 0 
2 50000004 51484139 0 
2 51484139 249250621 0 
2 249250621 250000001 0 
+3

귀하의 의견은 귀하의 의견과 관련이 있습니까? –

+2

나는 여러분이 출력물을 '평균'으로 얻는 방법과 결과물'stat.pos'와'end.pos'를 선택하여 좀 더 나은 답을 얻는 방법에 대해 더 설명 할 필요가 있다고 생각합니다. –

+0

더 나은 설명으로 잘 편집 해 봤습니다. 필자는 데이터 프레임을 기본적으로 축소하고 있습니다. 첫 번째 행은 0으로, 중지는 -11194349는 입력을 1로 표시하고, 출력에서는 4를 보여줍니다. – user3324491

답변

-1

당신은

output <- input_data %>% 
      group_by(sample_ID,chrom) %>% 
      order(start.pos,end.pos) %>% 
      summarize(Mean = mean(mean)) 

이 당신이 재현 예를 제공하려고 도움이되지 않는 경우 dplyr 패키지와 함께 쉽게 그렇게 할 수 있습니다.

1

사용 data.table : 당신은 평균으로 열로 '평균'을 이름을 안

library(data.table) 
setDT(mydataframe)[order(start.pos,end.pos),list(summean=sum(meancol)),by=list(sampleID, chrom)] 

는 기능과 혼란이있을 수 있습니다.

관련 문제