【R】条件に合う行数をカウントする方法

スポンサーリンク

膨大な行数のデータセットを扱っている時、ある条件にあう行数をカウントしたいときはよくあると思います。

例えば、

  • ある列の値が0である行数は?
  • ある列の値がNAである行数は?
  • ある列の値が10以上である行数は?

などです。

summarystrも使えますが、具体的にカウントしたいときには不十分です。

lengthを駆使して、length(XXX[XXX$xxx>0,])としても何故か欲しい値が返ってきません。

そこで使えるのがdplyrパッケージのcount関数です。

例えばirisのデータセットでSepal.Length(がく片の長さ)が5cm以上のサンプル数を数えたい時は以下のようにカウントします。


# irisのデータの中身
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

#dplyrパッケージのインストール
> library(dplyr)

count(iris,Petal.Length>5)
Source: local data frame [2 x 2]

Petal.Length > 5 n
1 FALSE 108
2 TRUE 42

dplyrは直感的だし、とても便利です。

追記

わざわざdplyrパッケージを読み込まなくてもtable関数で済むことを教えていただきました。
明らかにこちらのほうが便利です。


> table(iris$Petal.Length>5)

FALSE TRUE
108 42

ブログを通じて勉強させてもらい本当に感謝です。

追々記

sum()関数でも求められることを知りました。


> sum(iris$Petal.Length>5)
[1] 42


これが一番シンプルかもしれませんね。

スポンサーリンク
スポンサーリンク

4 件のコメント

    • コメントありがとうございます。確かにわざわざパッケージを読み込まなくてもtable関数で十分ですね。僕自身table関数を全然使いこなせていないので参考になりました。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です