2017-05-24 29 views
0

1つの列が別の列よりも大きい条件で観測が何回表示されるのかをカウントしたいと思います。条件付きデータフレーム

例えば、何回 "A"、 "B" と "C" は、列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),] 

よりも大きい場合にのみカウントapperead!

あなたがすることによって=オプションのdata.tableをしたいかもしれませんちょうどカテゴリ "A、B、C" よりも多くのがありますが 'B' と 'C'

ための同様

+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) 

が、誰かがおそらくそれが過度のことだと言っているだろう。

を使用でき
+0

数値を直接数値に変換すると、実際の値ではなく因子レベルの指標が得られます。最初に文字フォーマットを渡す必要があります。 'D $ B <-as.numeric(as.character(D $ B))' – Bea

0

:あなたがD <- as.data.frame(cbind(A,B,C))を行うときにfactorsを取得するので、あなたはその後、数値変数にBCを変換、またはあなただけのmatrixを経由せずに直接data.frameを作成するいずれかのことをtable(D$A[which(D$B>D$C)])

注:

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