문제

두 열의 완전한 사례 수를 어떻게 합산할 수 있나요?

와 함께 c 동일:

      a  b
[1,] NA NA
[2,]  1  1
[3,]  1  1
[4,] NA  1

다음과 같은 것을 적용

rollapply(c, 2, function(x) sum(complete.cases(x)),fill=NA)

전화번호 하나만 돌려받고 싶은데요. 2 이 경우.이는 많은 열이 포함된 대규모 데이터 세트에 대한 것이므로 다음을 사용하고 싶습니다. rollapply 단순히 하는 것보다 전체 세트에 걸쳐 sum(complete.cases(a,b)).

내가 너무 생각하고 있는 걸까?

감사해요!

도움이 되었습니까?

해결책

다음과 같이 rollapply를 사용하여 인접한 행렬 열에서 완전한 사례의 수를 계산할 수 있습니다.

m <- matrix(c(NA,1,1,NA,1,1,1,1),ncol=4)
#     [,1] [,2] [,3] [,4]
#[1,]   NA    1    1    1
#[2,]    1   NA    1    1

library(zoo)

rowSums(rollapply(is.na(t(m)), 2, function(x) !any(x)))
#[1] 0 1 2
.

다른 팁

시도해 보았 니 sum(complete.cases(x))?!

set.seed(123)
x <- matrix( sample( c(NA,1:5) , 15 , TRUE ) , 5 )
#     [,1] [,2] [,3]
#[1,]    1   NA    5
#[2,]    4    3    2
#[3,]    2    5    4
#[4,]    5    3    3
#[5,]    5    2   NA


sum(complete.cases(x))
#[1] 3

찾으려면 complete.cases() 처음 두 열 중:

sum(complete.cases(x[,1:2]))
#[1] 4

그리고 apply 두 개의 열에 matrix 전체 매트릭스에서 다음을 수행할 수 있습니다.

#  Bigger data for example
set.seed(123)
x <- matrix( sample( c(NA,1:5) , 50 , TRUE ) , 5 )
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1   NA    5    5    5    4    5    2   NA    NA
#[2,]    4    3    2    1    4    3    5    4    2     1
#[3,]    2    5    4   NA    3    3    4    1    2     2
#[4,]    5    3    3    1    5    1    4    1    2     1
#[5,]    5    2   NA    5    3   NA   NA    1   NA     5

# Column indices
id <- seq( 1 , ncol(x) , by = 2 )
[1] 1 3 5 7 9
apply( cbind(id,id+1) , 1 , function(i) sum(complete.cases(x[,c(i)])) )
[1] 4 3 4 4 3

complete.cases() 전체에 걸쳐 행 단위로 작동합니다. data.frame 또는 matrix 돌아오는 TRUE 데이터가 누락되지 않은 행에 대해.미성년자는 제쳐두고, "c" 잘못된 변수 이름이기 때문에 c() 가장 일반적으로 사용되는 기능 중 하나입니다.

이 Shoudl은 matrixdata.frame를 모두 수행합니다

> sum(apply(c, 1, function(x)all(!is.na(x))))

[1] 2
.

큰 매트릭스 M

를 통해 단순히 반복 할 수 있습니다.
for (i in 1:(ncol(M)-1) ){
    c <- M[,c(i,i+1]
    agreement <- sum(apply(c, 1, function(x)all(!is.na(x))))
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top