2013-05-31 3 views
0

매우 큰 데이터 세트가 있으며 값의 합계를 얻으려고합니다. 변수는 0과 1로 2 진수입니다. 어떻게 든문제 요약 합계

, 내가 첫 번째 열은 아무것도하지만 단지 NA를 포함하지 않는 것 뿐이다 루프

for (i in 7:39){ 
agegroup1[53640, i]<-sum(agegroup1[, i]) 
} 

루프 프로세스를 제외한 모든에 대한 실행합니다. 나는 값을 호출 해보고 0과 1을 보았을뿐만 아니라 클래스를 검사했다 ("integer"를 리턴한다). 하지만 모든 것을 추가 할 때 R은 작동하지 않습니다.

어떤 조언이 필요합니까?

+0

합산 한 열의 NA 값을 확인 했습니까? – joran

+0

''any'' (is.na (agegroup1)) '로'NA'를 검사 할 수 있고'which (is.na (agegroup1))'로 어디 있는지 확인할 수 있습니다. – Gregor

답변

3
cs <- colSums(agegroup1[, 7:39]) 

은 루프없이 (R 레벨에서) 열 합계 벡터를 제공합니다. 당신이 agegroup1[, 7:39]에서 누락 된 값 (NA들)이있는 경우

다음은 colSums() 전화 (또는 당신의 sum() 전화)에 na.rm = TRUE를 추가 할 수 있습니다.

당신은 agegroup1가하거나 등,하지만 루프가 무엇을하고 있는지 마무리 얼마나 많은 행이 다음 이전 agegroup1[53640, ]에 무엇을했다

agegroup1[53640, 7:39] <- cs 

가 당신에게 추가 시작 필요한 말을하지 않습니다 열 합계? NA? 그렇다면 그것은 어떤 행동을 설명 할 것입니다. 우리는 정말하지만 자세한 내용을 필요합니까

...

1

@Gavin 심슨은 실행 가능한 솔루션을 제공하지만 다른 방법이 적용 사용할 수 있습니다. 이 함수를 사용하면 행 또는 열 여백에 함수를 적용 할 수 있습니다.

x <- cbind(x1=1, x2=c(1:8), y=runif(8)) 

# If you wanted to sum the rows of columns 2 and 3 
apply(x[,2:3], 1, sum, na.rm=TRUE) 

# If you want to sum the columns of columns 2 and 3 
apply(x[,2:3], 2, sum, na.rm=TRUE)