2017-05-24 51 views
0

我想要計算一次觀察出現的次數,一列大於另一列的條件。使用條件計數 - 數據框計數

例如,多少次的 「A」, 「B」 和 「C」 apperead計數僅在B列大於colun 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),] 

謝謝!

+0

由於'C < - B + round(runif(15,1,5),0)'看起來'C'總是大於'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,但有人可能會說,這是過度的。

+0

直接將因子轉換爲數字會得到因子水平的指數而不是實際值。你必須首先通過字符格式:'D $ B <-as.numeric(as.character(D $ B))' – Bea

0

您可以使用:table(D$A[which(D$B>D$C)])

注意,當你做D <- as.data.frame(cbind(A,B,C))你會得到factors所以要麼你改變BC成數值變量之後,或者你只是直接創建data.frame沒有經過matrix

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