R 使用条件-数据帧计数

R 使用条件-数据帧计数,r,count,conditional,R,Count,Conditional,我想计算一个观察值在一列大于另一列的情况下出现的次数 例如,仅当列B大于列C时,“A”、“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),] set.seed(201705

我想计算一个观察值在一列大于另一列的情况下出现的次数

例如,仅当列B大于列C时,“A”、“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),]
set.seed(20170524)
首先,这些数字被转换成因子,这是有问题的。
D$B您可以使用:
表格(D$A[哪个(D$B>D$C)])


请注意,当您这样做时,
D看起来像
C
总是大于
B
,因为
C将因子直接转换为数值将得到因子级别的索引,而不是实际值。您必须首先通过字符格式:
D$B
#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)