【R言語の基礎#3】データの整理(dplyr)

記事の目的

R言語のライブラリdplyrの基本的な使い方について解説します。主にデータ整理のために使われ、データの前処理に使用するととても便利です。

 

目次

  1. 使用するライブラリとデータの作成
  2. データの確認
  3. パイプ演算子の利用
  4. データの格納

 

1 使用するライブラリとデータの作成

1.1 使用するライブラリ

dplyrというライブラリを使用します。

install.packages("dplyr") # 一度もインストールしていない場合
library(dplyr)

 

1.2 データの作成

以下のように、rnorm()で正規分布から乱数を発生させたり、rbinom()で二項分布から乱数を発生させてデータを作成します。ただ、今回のrbinom()はベルヌーイ分布を表して、0,1のデータを出力します。

set.seed(1)
数学 <- round(rnorm(10, 50, 10)) # 数学~N(50,10)
英語 <- round(rnorm(10, 50, 10)) # 英語~N(50,10)
クラス <- rbinom(10, 1, 0.5) # クラス~B(1,0.5), クラス~Be(0.5)
data <- data.frame(数学, 英語, クラス) # データフレーム作成
data # データ確認

 

2 データの確認

2.1 上からいくつか確認

パイプ演算子を使用することで、関数を逐次的に使用できます。

%>% head()でhead()関数を適応します。

head(data)
head(data,5) # 上から5個
data %>% head(5) # パイプ演算子

 

2.2 ランダムにいくつか確認

sample_n()はランダムにデータを指定した分表示します。

data %>% sample_n(5) # ランダムに5個 

 

3 パイプ演算子の利用

3.1 select (カラム選択)

select()で列名を指定して指定した列のデータを取得できます。

data %>%
  select(数学, クラス) # カラム選択

 

3.2 filter (条件の合う行を選択)

filter()で条件に適したデータを指定することができます。

data %>%
  select(数学, クラス) %>% # カラム選択
  filter(数学>50) # 条件

 

3.3 mutate (既存データの変更や追加)

mutate()で新しい列を追加りたり、既存データの変更することができます。

data %>%
  select(数学, クラス) %>% # カラム選択
  filter(数学>50) %>% # 条件
  mutate(数学z=scale(数学)) %>% # 新しい列追加
  mutate(数学=数学-2) %>% # 既存データの変更
  mutate(クラス=ifelse(クラス==1, "A", "B")) # ifelse(条件, TRUE, FALSE)

 

3.4 arrange(データを昇順や降順に並び替える)

arrange()でデータを昇順や降順に並び替えることができます。

data %>%
  select(数学, クラス) %>% # カラム選択
  filter(数学>50) %>% # 条件
  mutate(数学z=scale(数学)) %>% # 新しい列追加
  mutate(数学=数学-2) %>% # 既存データの変更
  mutate(クラス=ifelse(クラス==1, "A", "B")) %>% # ifelse(条件, TRUE, FALSE)
  arrange(数学) %>% # 昇順
  arrange(desc(数学)) # 降順

 

3.5 rename (カラム名変更)

rename()でカラム名を変更することができます。

data %>%
  select(数学, クラス) %>% # カラム選択
  filter(数学>50) %>% # 条件
  mutate(数学z=scale(数学)) %>% # 新しい列追加
  mutate(数学=数学-2) %>% # 既存データの変更
  mutate(クラス=ifelse(クラス==1, "A", "B")) %>% # ifelse(条件, TRUE, FALSE)
  arrange(数学) %>% # 昇順
  arrange(desc(数学)) %>% # 降順
  rename(英語=数学) # カラム名変更

 

3.6 group_by + summarise (グループごとの集計)

グループごとの集計方法です。

data %>%
  select(数学, クラス) %>% # カラム選択
  filter(数学>50) %>% # 条件
  mutate(数学z=scale(数学)) %>% # 新しい列追加
  mutate(数学=数学-2) %>% # 既存データの変更
  mutate(クラス=ifelse(クラス==1, "A", "B")) %>% # ifelse(条件, TRUE, FALSE)
  arrange(数学) %>% # 昇順
  arrange(desc(数学)) %>% # 降順
  rename(英語=数学) %>% # カラム名変更
  group_by(クラス) %>% # グループ分け
  summarise(英語m=mean(英語), 英語s=sum(英語)) # 集計

 

4 データの格納

data_new <- data %>%
  select(数学, クラス) %>% # カラム選択
  filter(数学>50) %>% # 条件
  mutate(数学z=scale(数学)) %>% # 新しい列追加
  mutate(数学=数学-2) %>% # 既存データの変更
  mutate(クラス=ifelse(クラス==1, "A", "B")) # ifelse(条件, TRUE, FALSE)
data_new %>% head()