データが
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))
編集(タイラー・リンカー):
私は速度を考慮して 3 つのアプローチに興味があり、Paul の最初のアプローチが最速であると考えましたが、間違っていました。microbenchmark パッケージを使用した 10,000 行のデータセット (500 回の反復):
## 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