3

假设数据是

A B C
0 1 0
1 1 0   <- here A and B is 1
1 0 0
0 1 1
1 1 1   <- here too
1 1 0   <- and here too

我想计算 A 和 B 均为 1 的次数。在本例中为 3。使用 SQL 很容易,但我不知道如何使用R来完成。

4

2 回答 2

9

如果df您的 data.frame 是带有列的,则A,B,C

sum(df$A==1 & df$B==1)
于 2013-05-13T18:23:34.827 回答
4

这可以解决问题,首先创建一些数据:

df = data.frame(round(matrix(runif(3*10), 10, 3)))
names(df) = c("A","B","C")

并寻求解决方案:

sum(rowSums(df[c("A","B")]) == 2)

或者:

sum(apply(df[c("A","B")] == 1, 1, all))

编辑(泰勒林克):

我对考虑速度的三种方法感到好奇,我认为 Paul 的第一种方法会最快,但这是错误的。在使用 microbenchmark 包(500 次迭代)的 10,000 行数据集上:

## Unit: microseconds
##       expr       min        lq     median        uq         max neval
##  LOGICAL()   386.725   397.455   412.1495   434.308     710.940   500
##    APPLY() 31225.830 39327.696 42790.0280 46586.137 1169824.066   500
##  ROWSUMS()   460.432   489.588   590.5840   621.373    7884.713   500
于 2013-05-13T18:23:52.517 回答