2014-07-15 4 views
0

R의 데이터 프레임에서 평균을 계산하려고합니다. 파일은 염색체의 범위 (열 2,3)에 적용 범위 (열 4)의 출력을 나타냅니다. (1 열).단일 통계를 생성하기 위해 R에서 행 연산을 수행하는 방법

데이터는 다음과 같습니다

V1 V2 V3 V4 
1 65 69 103 
1 69 70 107 
1 70 74 108 
1 74 75 110 
1 75 77 111 
1 77 78 113 
1 78 79 115 
1 79 80 118 
1 80 81 119 

내가 파일의 모든 이상 평균 범위를 계산합니다. 종이에 이것은 다음과 같이 보입니다 : [103 * (69-65) +107 (70-69) +108 (74-70) + ... + V4 (V3-V2)]lengthOf 염색체는 알려져 있습니다.

저는 솔루션을 찾고 있었으며, 가장 가까운 것은 행 집합 연산자입니다 (apply() 제품군). 이것들은 결과물의 대부분이 행렬이나리스트 또는 벡터로 보여지기 때문에 작업에 특히 적합하지 않은 것처럼 보입니다. 내 목표는 하나의 통계 즉 평균을 얻는 것입니다. 나는 또한 표준 편차에 관심이 있을지 모르나, 지금은 그다지 중요하지 않다.

올바른 방향으로 조언을 보내 주시면 감사하겠습니다.

+2

을 (-1) 조금 가혹한 시작 2 개의 해답에 의해 입증 된 바와 같이, 풀리는 것이 불분명하지 않다. – thelatemail

답변

2

. R에서 대부분의 연산자는 벡터화 된 방식으로 작동합니다. 그래서 데이터가 data.frame에있는 경우는 우리가 우리가없는 with()를 사용 dd

dd<-structure(list(V1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), V2 = c(65L, 
69L, 70L, 74L, 75L, 77L, 78L, 79L, 80L), V3 = c(69L, 70L, 74L, 
75L, 77L, 78L, 79L, 80L, 81L), V4 = c(103L, 107L, 108L, 110L, 
111L, 113L, 115L, 118L, 119L)), .Names = c("V1", "V2", "V3", 
"V4"), class = "data.frame", row.names = c(NA, -9L)) 

그런 다음 여기에 간단한

with(dd, sum(V4*(V3-V2))) 

(와 방정식의 분자를 얻을 수있다라는 .이 분명히있다 연구 effor - dd$을 여러 번 무리를 쓰기) 그리고 염색체의 아이폰에 가정하는 것은 바로 최대 끝 적은 분은

with(dd, sum(V4*(V3-V2))/(max(V3)-min(V2))) 
1

dat 경우 data.frame이며, 경우 V11입니다 : 심지어 여기 apply() 필요하지 않습니다

with(dat, sum(V4*(V3-V2)))/(lengthOfChromosome) 
관련 문제