2014-02-18 2 views
0

나는 1 백만 + 라인 목록을 가지고 있습니다.R의 평균 쌍 차이 계산

chr_position sick1 sick2 ... sick14 control1 control2 ... control14 p-value 
chr1_1231 87.8 100 96.1 89.5 NA NA 93.8 95.7 95.5 92 NA 100 90.9 NA 100 NA 94.3 90.6 NA 92.5 100 86.7 NA NA 86.4 84.2 NA 90 0.844 
chr2_412 96.1 NA 90.5 98 95.8 95.2 100 NA NA 97.5 NA 100 100 NA 100 98.5 NA 100 NA 100 100 93.6 NA 100 NA NA 93.3 NA 0.59 
... 

나는 각 라인 (제어 1과 sick1) (control14와 sick14)의 평균 쌍 차이를 계산하고 싶습니다.

이상적으로, I는 I이 쉬운 엑셀 문제이지만 인해 큰 행수로는 엑셀에서 수행 할 가능하지 실현

chr_position pair1diff pair2diff ... pair14diff count_of_valid_pairs paired_diff 

의 출력 싶다. 나는 간단히 검색해 보았지만 combn은 적용 가능하지 않다고 생각한다. 조언 해 주셔서 감사합니다.

답변

0

열이 일관되고 인접한 경우 벡터 계산으로 빼기 만하면됩니다. 여기에 (내가 단지 1에 대한 데이터를 합성 한 : 4하지 1시 14분,하지만 당신은 아이디어를 얻을) 예입니다 단지 abs(df[,2:5]-df[,6:9]) 비트이 실제로 R에서 매우 간단 abs(df[,1:15]-df[,16:29])

df<-data.frame(chrposition=sample(LETTERS,1000,T), 
sick1=runif(1000), 
sick2=runif(1000), 
sick3=runif(1000), 
sick4=runif(1000), 
control1=runif(1000), 
control2=runif(1000), 
control3=runif(1000), 
control4=runif(1000), 
pval=0.9+(runif(1000)*0.1)) 


new.df<-cbind(chrposition=df$chrposition, 
       abs(df[,2:5]-df[,6:9]), # vector diff between cols 2-5 and 6-9 
       pval=df$pval) 

head(new.df) 

    chrposition  sick1  sick2  sick3  sick4  pval 
1   O 0.21122616 0.28441462 0.4917417 0.06320374 0.9119544 
2   I 0.15434718 0.07624787 0.6844081 0.19595290 0.9494703 
3   A 0.03824239 0.63021683 0.2989420 0.59546995 0.9529900 
4   M 0.55047434 0.11957975 0.5392134 0.05878512 0.9140963 
5   H 0.20543950 0.48312551 0.1006623 0.34576621 0.9461521 
6   R 0.74644532 0.12232382 0.1352527 0.67883728 0.9465176 
0

말을 변경

예를 들어

: 물론

# Generate some data 
data <- matrix(rnorm(28*10000), ncol=28) 
colnames(data) <- c(paste0("sick", 1:14), paste0("ctrl", 1:14)) 

diffs <- data[,1:14]-data[,15:28] 

, 당신은 데이터의 구조에 따라 열 인덱스를 변경해야합니다.

+0

감사합니다. 그것은 올바른 것 같아요,하지만 출력 = c (데이터 [, 1], diffs, 데이터 [, 30]) write.table (file = "testingoutput.txt", 출력, row.names = FALSE, col.names = FALSE, quote = FALSE, append = TRUE) 원하는 출력 파일에 대해 아무것도 나오지 않았습니다. – user3222627

+0

'diffs '에 올바른 데이터가 있습니까? – nico