Text Update: 01/21, 2020 (JST)
Rで条件を満たすデータの個数を数える方法はいたってシンプルです。
ベクトルデータの場合
例えば任意に発生させた\(1\)から\(100\)までの\(100\)個の整数があるとします。
set.seed(1)
x <- round(runif(100, 1, 100))
x
## [1] 27 38 58 91 21 90 95 66 63 7 21 18 69 39 77 50 72 99 39 78 94 22 66 13 27
## [26] 39 2 39 87 35 49 60 50 19 83 67 80 12 73 42 82 65 79 56 53 79 3 48 73 70
## [51] 48 86 44 25 8 11 32 52 67 41 91 30 46 34 65 27 48 77 9 88 35 84 35 34 48
## [76] 89 87 40 78 96 44 72 41 33 76 21 71 13 25 15 25 7 65 88 78 80 46 42 81 61
この\(100\)個の整数に\(90\)を超える数値がいくつ含まれているかをカウントするには、条件式とsum
関数を用いて以下のように指定するだけです。
sum(x > 90)
## [1] 6
Rでは条件式を満たす場合はTRUE
満たさない場合はFALSE
を返します。
x > 90
## [1] FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [61] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [97] FALSE FALSE FALSE FALSE
TRUE
は1
、FALSE
は0
と等価ですから
as.integer(x > 90)
## [1] 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
## [75] 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
合算することにより条件式を満たしているデータの個数を求められます。
sum(as.integer(x > 90))
## [1] 6
ベクトル演算が可能なRならではの方法です。
Enjoy!