SlideShare una empresa de Scribd logo
1 de 32
TokyoR #58
脱初心者!
セッション
@kotatyamtema
@kotatyamtema
大学での専門は行動生態学
性的二型とsexual selection
対象は魚類:♂の背びれの伸長に
影響を与える要因を探索
職歴
家電メーカーでユーザビリティ評価
心拍や脳波,脳血流を使った身体反応評価
筋電図を使った身体負荷評価,歩容(歩く姿勢)評価
医療機器メーカーで臨床試験のデータ管理と初期分析
投薬データのダミー化と集計,欠損確認,基礎統計量の算出
活動量計データの自動集約,レポート生成スクリプトの作成
現在
DATUM STUDIO 株式会社
データアナリストとして生息中
自己紹介
Hadley神が
データ分析の前処理に
ついて言及
tidyverse
tidydata
tidyverse
tidydata
なんのこと?
tidyとは「整然と」
「整った」という意味
tidyとは「整然と」
「整った」という意味
tidydataとは?
tidyverseとは?
tidydataとは
操作、解析、可視化を柔軟
に扱えるように整えられた
データ
tidyverseとは
tidydataを作るために
整えられたtool類
tidyverseを使って
tidydataを作ろう!
本日のお題
分析用データ
前処理入門
tidyverse(dplyr/tidyr)の扱いを中心に
目次(予定)
1.ディレクトリの指定
2.R内のデータセットの呼び出し
3.外部データの読み込み
※初心者つまづきpoint
4.データの確認
概要
データ型
欠損
5.データの整理
列の追加
列の選択
条件抽出
6.データの集計
1.ディレクトリの指定
何はともあれ作業ディレクトリを作りましょう!
作業ディレクトリとは:
分析結果や分析用データを置いておくフォルダ
⇒Rの作業ディレクトリを任意のフォルダに変更する
Rが認識しているディレクトリを確認
getwd()
[1] “C:”
任意のディレクトリをRに認識させる
setwd(“C:workTokyoR”)
getwd()
[1] “C:workTokyoR”
C:workTokyoR
C:
1.ディレクトリの指定
ディレクトリの設計について
setwdで指定した後のファイルパスは”./hoge”でできる
⇒流用・書き直しが少なくなる
⇒凡ミスが減る
※注意点
使いやすいフォルダ構成で統一
なるべくCドライブorDドライブ直下
フォルダ名はアルファベット+数字のみ
1.ディレクトリの指定
ディレクトリの設計について
※参考例
基本構成は以下の3つ
setwd(“C:workTokyoR”)で指定した後は
read.csv(“./00_script/hoge.csv”)のような指定方法
※案件や条件によって自分の最適を見つけましょう
C:workTokyoR
00_script 01_data
02_results
2.R内のデータセットの呼び出し
パッケージ付属のサンプルデータを呼び出す
使いたいデータが入っているパッケージを呼び出してからdata(hoge)
またデフォルトで入っている”dataset”パッケージにもサンプルデータ
# Example
# デフォルトで入っているサンプルデータ
data(iris)
# ggplot2パッケージに付属のデータ”diamonds”を呼び出す
library(ggplot2)
data(diamonds)
それぞれ呼び出しに使った名前のオブジェクトで保存される
3.外部データの読み込み
高速読み込み関数は2つ
1.data.table::fread
2.readr::read_csv
Example
dat <- fread("./01_data/dat.csv",
header = TRUE, stringsAsFactors = FALSE,
integer64 = "double", data.table = FALSE)
header:1行目をカラム名として扱うか
TRUEだと扱う FALSEだと扱わない
stringsAsFactors:文字と数値が混ざった場合に因子にするかどうか
TRUEだと因子にする FALSEだと文字にする
integer64:
data.table:読み込み後data.tableとして扱うか
TRUEだとdata.tableにする FALSEだとdata.frameにする
3.外部データの読み込み
高速読み込み関数は2つ
1.data.table::fread
2.readr::read_csv
Example
dat <- read_csv(“./01_data/dat.csv”,
col_names = TRUE)
col_names:1行目をカラム名として扱うか
TRUEだと扱う FALSEだと扱わない
※使い分け
データが重くなるとfreadの方が圧倒的に早い
個人的にはfreadおすすめ(根拠はない)
※初心者つまづきpoint
1.カラム名について
普通に選択できない名前がある
数値が先頭
“¥?()[]”のような特殊な記号が入っている
`:バッククォートで囲むと$でも選択できる
one_of()の中に入れればそのままでも選択できる
が、分析結果でも``が付いたままになってしまうなど
通常とは違う扱いになるため、めんどくさい
結論
上記のようなカラム名は使わない。
読み込んだ場合は即座にカラム名を変更する。
4.データの確認:概要
# データを呼び出す
data(iris)
# 何行あるか確かめる
nrow(iris)
150
# 何列あるか確かめる
ncol(iris)
5
4.データの確認:概要
# 先頭からn行見る
head(iris, 2)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
15.1 3.5 1.4 0.2 setosa
24.9 3.0 1.4 0.2 setosa
# 基礎集計
summary(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Min. :4.30 Min. :2.000 Min. :1.000 Min. :0.100
setosa :50
1st Qu.:5.10 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
versicolor:50 Median :5.80 Median :3.000 Median :4.350
Median :1.300 virginica :50 Mean :5.843 Mean :3.057
Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
4.データの確認:データ型
# データ型の確認
# data.frameかどうか
is.data.frame(iris)
[1] TRUE
# data.tableかどうか
is.data.table(iris)
[1] FALSE
# 各カラムごとの型
mode(iris$Sepal.Length)
[1] "numeric"
4.データの確認:データ型
# データ型の変更
# data.tableにする
table_iris <- as.data.frame(iris)
# 確認
is.data.table(table_iris)
[1] TRUE
# 各カラムごとの型
# 文字型にする
table_iris$Sepal.Length <-
as.character(table_iris$Sepal.Length)
# 確認
is. character(table_iris$Sepal.Length)
[1] TRUE
4.データの確認:欠損
# 欠損の確認
is.na(data)
# 欠損の無いdata.frameにする
comp_data <- data[complete.cases(data),]
# 重複のないdata.frameにする
comp_data <- distinct(data)
# 欠損すべてに0を代入する
data[is.na(data)] <- 0
# 欠損は奥深いので状況に合わせて扱いましょう
pipe演算子の使い方
pipe演算子とは
%>%のこと
dplyr, tidyr, stringi......tidyverseに含まれるパッケージでは
共通の書き方
処理後のデータを後ろにパスしていく役割
# example
1:data %>% # dataというdata.frameを準備して2に渡す
2:mutate(n = a*b)%>% # 渡されたdataにカラムを追加して3に渡す
3:filter(n > 5) # 渡されたdataのうち条件に合うものを残す
ご利益
1.いちいち元のデータを書かなくてよい
2.処理の順序と内容が一目瞭然
ぜひ使いましょう!
5.データの整理:列の追加、削除、選択
# id列とNo列を追加
iris1 <- iris%>%
mutate(id = paste0(“id”, 1:nrow(iris)),
No = 1:nrow(iris))
# No列を削除
iris2 <- iris1%>%
select(-No)
# 末尾がLengthのカラムと種名、id列を選択
iris3 <- iris2%>%
select(id, Species, ends_with("Length"))
5.データの整理:便利機能
# 特定のカラム名のカラムだけを対象に集計する
summarise_at, mutate_at
# 特定の条件のカラムだけを対象に集計する
summarise_if, mutate_if
# カラム名の指定の方法
# 完全一致するカラムを指定
one_of(“hoge”)
# 指定した文字列を含むカラムを指定
contains(“hoge”)
# 指定した文字列で始まるカラムを指定
starts_with(“ho”)
# 指定した文字列で終わるカラムを指定
ends_with(“ge”)
5.データの整理:条件抽出
# idが3より大きいデータを抽出
iris4 <- iris3%>%
filter(id > 3)
# end条件は &、or条件は | で指定
# Sepal.LengthとPetal.Lengthの両方が平均以上のデータを抽出
iris5 <- iris4%>%
filter(Sepal.Length >= mean(Sepal.Length) &
Petal.Length >= mean(Petal.Length))
# Sepal.LengthとPetal.Lengthのどちらかが平均以上のデータを抽
出
iris6 <- iris4%>%
filter(Sepal.Length >= mean(Sepal.Length) |
Petal.Length >= mean(Petal.Length))
6.データの集計
# 種類ごとに長さの平均と分散を求める
summary_iris <- iris%>%
group_by(Species)%>%
summarise_at(vars(ends_with("Length")),
funs(mean, sd))
summary_iris
# A tibble: 3 x 5
Species Sepal.Length_mean Petal.Length_mean Sepal.Length_sd
Petal.Length_sd
<fctr> <dbl> <dbl> <dbl> <dbl>
setosa 5.006 1.462 0.3524897
0.1736640
versicolor 5.936 4.260 0.5161711
0.4699110
virginica 6.588 5.552 0.6358796
0.5518947
消化不良なので
続きあり!?
Enjoy!
7.ピポット整形

Más contenido relacionado

Destacado (19)

Music cover analysis
Music cover analysisMusic cover analysis
Music cover analysis
 
Marketing upulsa mubu
Marketing upulsa mubuMarketing upulsa mubu
Marketing upulsa mubu
 
Ma.candelaria parés
Ma.candelaria parés Ma.candelaria parés
Ma.candelaria parés
 
SHE IS / HE IS
SHE IS / HE ISSHE IS / HE IS
SHE IS / HE IS
 
Skates seminar 2 michael plummer
Skates seminar 2 michael plummerSkates seminar 2 michael plummer
Skates seminar 2 michael plummer
 
Girls Looking For Men
Girls Looking For MenGirls Looking For Men
Girls Looking For Men
 
피티프로그램
피티프로그램피티프로그램
피티프로그램
 
Tipos y beneficios de las herramientas web 2.0 en la gerencia educativa
Tipos y beneficios de las herramientas web 2.0 en la gerencia educativaTipos y beneficios de las herramientas web 2.0 en la gerencia educativa
Tipos y beneficios de las herramientas web 2.0 en la gerencia educativa
 
Presentation for media
Presentation for mediaPresentation for media
Presentation for media
 
Skates pp.11 12
Skates pp.11 12Skates pp.11 12
Skates pp.11 12
 
τηλεοπτικη παραγωγη(θεωρια)
τηλεοπτικη παραγωγη(θεωρια)τηλεοπτικη παραγωγη(θεωρια)
τηλεοπτικη παραγωγη(θεωρια)
 
Skate online presentation_lawrence
Skate online presentation_lawrenceSkate online presentation_lawrence
Skate online presentation_lawrence
 
조승원 재무컨설팅
조승원 재무컨설팅조승원 재무컨설팅
조승원 재무컨설팅
 
Thriller Directors
Thriller DirectorsThriller Directors
Thriller Directors
 
Jonas Akerlund
Jonas AkerlundJonas Akerlund
Jonas Akerlund
 
Bluerint
BluerintBluerint
Bluerint
 
Power de planos
Power de planosPower de planos
Power de planos
 
Best Cellulite Removal
Best Cellulite RemovalBest Cellulite Removal
Best Cellulite Removal
 
Scientists devise new way to dramatically raise rna treatment potency
Scientists devise new way to dramatically raise rna treatment potencyScientists devise new way to dramatically raise rna treatment potency
Scientists devise new way to dramatically raise rna treatment potency
 

Similar a TokyoR58 初心者セッション

Fumitot ver.2.3
Fumitot ver.2.3Fumitot ver.2.3
Fumitot ver.2.3
FumitoT
 

Similar a TokyoR58 初心者セッション (13)

WI2研究会 Vol.10発表資料20170708
WI2研究会 Vol.10発表資料20170708WI2研究会 Vol.10発表資料20170708
WI2研究会 Vol.10発表資料20170708
 
データ解析
データ解析データ解析
データ解析
 
Jcors_2021年アドベントカレンダー企画スライド
Jcors_2021年アドベントカレンダー企画スライドJcors_2021年アドベントカレンダー企画スライド
Jcors_2021年アドベントカレンダー企画スライド
 
労働生産性改善に向けたウェアラブル機器を用いた体調推定法の検討
労働生産性改善に向けたウェアラブル機器を用いた体調推定法の検討労働生産性改善に向けたウェアラブル機器を用いた体調推定法の検討
労働生産性改善に向けたウェアラブル機器を用いた体調推定法の検討
 
20161106予測指標の作り方当日1031 配布版
20161106予測指標の作り方当日1031  配布版20161106予測指標の作り方当日1031  配布版
20161106予測指標の作り方当日1031 配布版
 
G214 中 ルミ・天野 博・いとうたけひこ (2014年8月). 在宅看護にいかすエネルギーフィールドへのケア: ヒーリングタッチの効果, 第38回生命...
G214 中 ルミ・天野 博・いとうたけひこ (2014年8月). 在宅看護にいかすエネルギーフィールドへのケア: ヒーリングタッチの効果, 第38回生命...G214 中 ルミ・天野 博・いとうたけひこ (2014年8月). 在宅看護にいかすエネルギーフィールドへのケア: ヒーリングタッチの効果, 第38回生命...
G214 中 ルミ・天野 博・いとうたけひこ (2014年8月). 在宅看護にいかすエネルギーフィールドへのケア: ヒーリングタッチの効果, 第38回生命...
 
医療ビッグデータ勉強会プレゼン公開版
医療ビッグデータ勉強会プレゼン公開版医療ビッグデータ勉強会プレゼン公開版
医療ビッグデータ勉強会プレゼン公開版
 
160225 kurume 02
160225 kurume 02160225 kurume 02
160225 kurume 02
 
単一事例研究法と統計的推測:ベイズ流アプローチを架け橋として
単一事例研究法と統計的推測:ベイズ流アプローチを架け橋として単一事例研究法と統計的推測:ベイズ流アプローチを架け橋として
単一事例研究法と統計的推測:ベイズ流アプローチを架け橋として
 
Fumitot ver.2.3
Fumitot ver.2.3Fumitot ver.2.3
Fumitot ver.2.3
 
Preregistration_JAEP2022_Kashihara.pdf
Preregistration_JAEP2022_Kashihara.pdfPreregistration_JAEP2022_Kashihara.pdf
Preregistration_JAEP2022_Kashihara.pdf
 
シリコンバレー比較20171030小柳
シリコンバレー比較20171030小柳シリコンバレー比較20171030小柳
シリコンバレー比較20171030小柳
 
事前登録のやり方
事前登録のやり方事前登録のやり方
事前登録のやり方
 

Más de kotora_0507 (10)

TokyoR102_BeginnersSession.pdf
TokyoR102_BeginnersSession.pdfTokyoR102_BeginnersSession.pdf
TokyoR102_BeginnersSession.pdf
 
TokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdfTokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdf
 
TokyoR101_BeginnersSession1.pdf
TokyoR101_BeginnersSession1.pdfTokyoR101_BeginnersSession1.pdf
TokyoR101_BeginnersSession1.pdf
 
TokyoR98_BeginnersSession1.pdf
TokyoR98_BeginnersSession1.pdfTokyoR98_BeginnersSession1.pdf
TokyoR98_BeginnersSession1.pdf
 
Tokyo r94 beginnerssession3
Tokyo r94 beginnerssession3Tokyo r94 beginnerssession3
Tokyo r94 beginnerssession3
 
Tokyo r80 beginnerssession1
Tokyo r80 beginnerssession1Tokyo r80 beginnerssession1
Tokyo r80 beginnerssession1
 
TokyoR79 beginnerssession1
TokyoR79 beginnerssession1TokyoR79 beginnerssession1
TokyoR79 beginnerssession1
 
Sendai r01 beginnerssession1
Sendai r01 beginnerssession1Sendai r01 beginnerssession1
Sendai r01 beginnerssession1
 
Beginners session2 in TokyoR69
Beginners session2 in TokyoR69Beginners session2 in TokyoR69
Beginners session2 in TokyoR69
 
Beginners session2 68
Beginners session2 68Beginners session2 68
Beginners session2 68
 

TokyoR58 初心者セッション