客寄せパンダとデータサイエンス

R, Pythonのコードをまとめています。

Rでグループ平均を計算してデータフレームにまとめる

本稿ではRを用いてグループ内平均を計算する方法をご紹介いたします。

パッケージの読み込み

library(dplyr)

インストールされていない方はinstall.packages("dplyr")をご利用下さい。

使用するデータセット

今回は、男女2人ずつのテストのスコア("Tesy_score")が含まれるデータセットを作成しました。 男性("male")と女性("female")ごとの平均を計算していきましょう。

data <- data.frame(name = c("Taro", "Jiro", "Hanako", "Noriko"), 
                sex = c("male","male","female","female"), 
                Test_score =c(90,80,100,70))

データセットは以下のようになっています。

使用するデータセット(data):名前(name)、性別(sex)、テストの点数(Test_score)がそれぞれ含まれている。Taroさんは男性でテストのスコアは90。

グループ内平均の計算

data <- data %>%
  group_by(sex) %>%
  mutate(Ave_by_sex=mean(Test_score)) %>%
  mutate(diff_by_sex=Test_score-Ave_by_sex) %>% 
  ungroup()

2列目では、性別(sex)毎にグループ化しています。3列目では、性別毎の平均(Ave_by_sex)をmean()を使って計算しています。4列目では、性別毎の平均と自分のスコアの差(diff_by_sex)を計算しています。 完成したデータセットはこちらです。

計算結果:性別毎の平均(Ave_by_sex)と性別平均と自分の差(diff_by_sex)がまとめられている。表から、女性の平均は82.5点でNorikoさんは12.5点足りていない。

最後に

最後に使用したコードをすべてまとめておきます。

library(dplyr)

data <- data.frame(name = c("Taro", "Jiro", "Hanako", "Noriko"), 
                sex = c("male","male","female","female"), 
                Test_score =c(90,80,100,70))

data <- data %>%
  group_by(sex) %>%
  mutate(Ave_by_sex=mean(Test_score)) %>%
  mutate(diff_by_sex=Test_score-Ave_by_sex) %>% 
  ungroup()

皆様の助けになれば幸いです。