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

編集(タイラー・リンカー):

私は速度を考慮して 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
于 2013-05-13T18:23:52.517 に答える