読者です 読者をやめる 読者になる 読者になる

Rで検索する際に使いそうな関数の紹介と使い方

こんにちは。
最近、Rを使い始めて統計処理を始めました。
Rで統計処理をする場合はある条件のデータを取得してから、統計的手法を試すという流れだと思います。違ってたら、すいません。
で、そういうときにある条件からデータを検索するのに私がよく使った関数を2つほど紹介したいと思います。

grep関数の紹介

grep関数です。Linuxコマンドでも同じなので、やることは想像できると思います。
文字列をデータ検索する際に使う関数です。
こんな感じです。検索条件に正規表現を用いることもできます。

> grep("検索したい文字列",検索したいベクトルやデータフレーム)


具体的な使い方です。

/* 使用例 ベクトルの場合*/
> test <- c("test","hoge","fuga","piyo","test1")
> test
[1] "test"  "hoge"  "fuga"  "piyo"  "test1"

> grep("test",test)
[1] 1 5

/* 使用例 データフレームの場合*/
> test_frame <- data.frame(x = test,y = 1:5)

> test_frame
      x y
1  test 1
2  hoge 2
3  fuga 3
4  piyo 4
5 test1 5

> grep(1,test_frame$y)
[1] 1

subset関数の紹介

データフレームを使う場合に多用しました。
この関数を使いこなすことでほぼ検索はできるようになる気がします。
Rの検索条件を複数指定する場合は「&&」ではなく、「&」になります。ほかのプログラム言語と違うので、最初はよく間違えますが、気をつけてください。
1つの列に対して複数の値を検索条件に指定したい場合もあると思いますが、そんなときの指定方法も載せときましたので、参考にしてください。

subset(検索したいデータフレーム,検索条件,select = 抽出する列名)

具体的な使い方はこんな感じです。

> test_frame
      x y
1  test 1
2  hoge 2
3  fuga 3
4  piyo 4
5 test1 5

> subset(test_frame,x == "test")
     x y
1 test 1

> subset(test_frame,x == "test" & y == 1)
     x y
1 test 1

> subset(test_frame,x == "test" & y == 1,select = x)
     x
1 test

/* 1つの列に対して複数の値を指定する場合*/
> search_word <- c("test","hoge","fuga")
> subset(test_frame,x %in% search_word,select = x)
     x
1 test
2 hoge
3 fuga

って感じです。Rを使いこなしたら、色々できそうなので今後も触っていきたいですね。