第1章ではRの基本的な操作について紹介しています。

Rではデータフレームを作ると以下のような形になっています。

スクリーンショット 2019-07-16 23.23.30

「身長」の列には男性も女性も含まれています。

このとき男性だけのデータ、女性だけのデータを取り出したいときもあります。

今回は特定の条件にあう要素を抜き出す方法を紹介します。


1.データの準備

以下のコードを全てコピー
→Rstudioのスクリプト画面に貼り付け
→全て選択してRun(cntrもしくはcommand + Enter)


url <- "https://github.com/mitti1210/myblog/blob/master/data01.csv?raw=true"
dat <- read.csv(url)
head(dat)

datという変数名で上記のデータフレームが完成します。
(全て架空のデータです)


2. [ ]を使う

今回は特定の条件にあう要素を抜き出すには[ ]を使います。
【1-9】医療統計をRで使うために必要な「データフレーム」にの考え方ついてでは$の代わりに[[ ]]を使うと解説しましたが、今回は[[ ]]ではなく[ ]です。



男性の氏名を抜き出すのは下のコードになります。

データフレーム$表示したい列[条件]

dat$氏名[性別 == "男性"]

スクリーンショット 2019-07-16 23.36.30



ここで新たな ==  が出てきました。

条件に関しては基本的には以下の条件式を使います。

スクリーンショット 2019-02-11 2.04.40
A == Bと A %in% Bは似ていますが、Bにあたる部分で==であれば1つしか入りません。
%in%は1つでも複数でも大丈夫です。その際はdat$氏名[性別 %in% c("男性","女性")]のようにc関数を使います。


条件は複数でも可能です。

身長175cmの男性であれば以下のようになります
dat$氏名[性別 == "男性" & 身長 >= 175]
スクリーンショット 2019-07-16 23.52.17



3. filter関数を使う

Rにはデータフレームを扱うのに非常に便利なtidyverse(タイディーバース)パッケージというものがあります。今からRを勉強するのであればtidyverseから勉強したほうがわかりやすく実用的です。

このサイトでも2章・3章でtidyverseパッケージを使ったデータ処理・グラフ作成を紹介しています。
データフレームから特定の行だけを抜き出す関数がfilter関数になりますが、【2-4】Rで指定した列や行だけを取り出すselect関数、slice関数、filter関数を紹介しますで詳しく説明しています。





4.まとめ

今回は特定の条件にあう要素を抜き出す方法について紹介しました。
Rを使っていくとtidyverseパッケージで完結することが多いですが、[ ]は検定や機械学習で訓練モデルとテストモデルに分けるときなどにも使いますので両方使えると便利です。