假设数据是
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来完成。
如果df
您的 data.frame 是带有列的,则A,B,C
:
sum(df$A==1 & df$B==1)
这可以解决问题,首先创建一些数据:
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