Rのfilter関数dplyr[文字列の部分一致]

顔妻です。

今回はdplyrのfilter関数を使ったデータテーブルの絞り込み方法についてです。SQLのwhere句のように簡単に絞り込みをしたいシーンがあると思います。また、値の比較だけではなく、部分一致で絞り込みたいときもあると思います。正規表現を使う方法もありますが今回はExcel感覚で部分一致ができる方法を紹介します。

  date weather temperature
1 2019-1-5 曇り 5
2 2019-1-6 晴れときどき曇り 15
3 2019-1-7 晴れ 20
4 2019-1-8 10
5 2019-1-9 -5
6 2019-1-10 くもり 8

数値を使って行の絞り込み

  date weather temperature
1 2019-1-6 晴れときどき曇り 15
2 2019-1-7 晴れ 20
3 2019-1-8 10

文字を使った行の絞り込み①

  date weather temperature
1 2019-1-9 -5

文字を使った行の絞り込み② 部分一致

  date weather temperature
1 2019-1-6 晴れときどき曇り 15
2 2019-1-7 晴れ 20

日付を使った行の絞り込み

  date weather temperature
1 2019-01-07 晴れ 20
2 2019-01-08 10
3 2019-01-09 -5
4 2019-01-10 くもり 8

複数要素の絞り込み

filter関数をつかっていっぺんに複数の要素を指定して絞り込みを行うことができます。

library(tidyverse)
# テストデータ作成
tenki <- data.frame(
  date = c("2019-1-5","2019-1-6","2019-1-7","2019-1-8","2019-1-9","2019-1-10"),
  weather = c("kumori","hare","hare","ame","雪","くもり"),
  temperature = c(5,15,20,10,-5,8))

# 複数要素を指定
 filter_para <- c("kumori","くもり")

# 絞り込み
tenki %>% 
  filter(weather %in% filter_para)

##    date weather temperature
##
## 1  2019-1-5  kumori           5
## 2 2019-1-10  くもり           8

まとめ

いかがでしょうか?セグメントやカテゴリ内を詳しくみていくために、データを絞り込んで集計するシーンは多いと思います。同じようなことはSQLでもできますが一度吐き出したデータを改めてSQLに入れ直すのはやはり手間です。また、文字の一部を使って絞ることも頻繁にあると思います。そんなときに是非試してみてください。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA