2017-05-24 5 views
0

하나의 열이 다른 열보다 큰 조건으로 관찰이 나타나는 횟수를 계산하고 싶습니다.조건부 - 데이터 프레임으로 계산

예를 들어

, 몇 번 "A", "B"와 "C"열 B가 C를

set.seed(20170524) 

A <- rep(c("A","B","C"),5) 
B <- round(runif(15,0,20),0) 
C <- round(runif(15,1,5),0) + B 
D <- as.data.frame(cbind(A,B,C)) 
D <- D[order(B),] 

감사합니다 colun보다 큰 경우에만 계산 apperead!

+0

'C'는 항상'C <- B + round (runif (15,1,5), 0)'처럼 'B'보다 큽니다. 아니면 숫자로 직접 변환하는 – Bea

답변

0
#firstly, those numbers got converted to factors, this is problematic. 
D$B<-as.numeric(D$B) 
D$C<-as.numeric(D$C) 

#Then, get the counts for the A: 
countA = sum(D$A=='A' & D$B < D$C) 

마찬가지로 'B'와 'C'

에 대한, 더 많은 단지 종류 이상의 "A는, B, C는"당신이에 의한 = 옵션에 data.table 작업을 수행 할 수 있습니다 있다면하지만, 누군가가 아마도 그것이 잔인하다고 말할 것입니다. table(D$A[which(D$B>D$C)])

참고가 D <- as.data.frame(cbind(A,B,C))을 수행 할 때 그렇게 하나 factors를 얻을 것이다 당신이 나중에 숫자 변수에 BC를 변환하거나 그냥 matrix를 거치지 않고 직접 data.frame를 만들 :

+0

요소를 잘못 이해 한 것이지 실제 값이 아닌 요소 수준의 인덱스를 얻을 수 있습니다. 문자 형식을 먼저 통과해야합니다 :'D $ B <-as.numeric (as.character (D $ B))' – Bea

0

당신은 사용할 수 있습니다

D <- data.frame(A,B,C)