Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
tidyverse tutorial 1
Search
kur0cky
September 20, 2019
Programming
91
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
tidyverse tutorial 1
tidyverse 超入門
講義用
kur0cky
September 20, 2019
More Decks by kur0cky
See All by kur0cky
The bootstrapping method for everyone
kur0cky
3
990
音楽理論と方向統計学の初歩/introduction of circular statistics and musicology
kur0cky
5
2.2k
NLP introduction in R 1
kur0cky
0
100
tidyverse tutorial 2
kur0cky
1
74
Other Decks in Programming
See All in Programming
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
170
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.9k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
980
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
190
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
180
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
8.8k
どこまでゆるくて許されるのか
tk3fftk
0
270
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
120
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.7k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
420
ふつうのFeature Flag実践入門
irof
8
4.2k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
150
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How to Talk to Developers About Accessibility
jct
2
270
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
55k
Optimizing for Happiness
mojombo
378
71k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
740
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
σʔλղੳͱલॲཧ .ࠇ༟ୋ !FEUVTBDKQ
࣍ σʔλղੳͱ 3ͱ34UVEJP 3ͷجຊ ϞμϯͳσʔλϑϨʔϜૢ࡞ !2
ຊ༻͢Δσʔλ TUBSXBST w ελʔΥʔζͷొਓʹؔ͢Δσʔλ IUUQTXBQJDP qJHIUT w ʹ-(" +',
&83Λग़ൃͨͯ͢͠ͷϑϥΠτͷఆࠁσʔλ XFBUIFS w -(" +', &83ͷఱީ෩ͷใ ࣌ؒ͝ͱ BJSMJOFT w ߤۭձࣾͷςʔϒϧ !3
σʔλղੳͱ
σʔλղੳͱ !5 6OEFSTUBOE *NQPSU 0VUQVU4IBSF
σʔλղੳͱ !6 *NQPSU 0VUQVU4IBSF 7JTVBMJ[F .PEFMMJOH *OUFSQSFU 5SBOTGPSN
5PPMT ͨ͘͞Μ͋Δ w ి w .JDSPTPGU&YDFM w *#.4144 w 4"4
w 1ZUIPO w 3 !7
5PPMT ͖ʹબྑ͍ w Έ ྲྀߦΓ څྉ ۙʹಘҙͳਓ͕͍Δ FUD !8 #JH%BUB
ػցֶश ౷ܭղੳ ϋϯυϦϯά 42- ˕ ✕ ✕ ˓ 3 ˚ ˓ ˕ ˕ 1ZUIPO ˚ ˕ ˓ ˓ &YDFM ✕ ✕ ✕ ✕ ి ✕ ✕ ✕ ✕
3ͱ34UVEJP
3 ಘҙͳͷͰ3Λհ͠·͢ w ΠϯλϓϦλݴޠ 㲗ίϯύΠϥݴޠ ॴ w 044 w
༷ʑͳ౷ܭղੳɾػցֶशϥΠϒϥϦ w 34UVEJPࣾͷଘࡏ ॴ w ͍ ෦͕$ ͳͲͰॻ͔Ε͍ͯΔͱ͍ !10
34UVEJPΛ͓͏ w 3ʹಛԽͨ͠౷߹։ൃڥ *%& w ΤσΟλͱͯ͠༏लͳ͚ͩͰͳ͘ ༷ʑͳ֦ுػೳ w ๛ͳγϣʔτΧοτ
w (JUͱͷ࿈ܞ w ແྉ !11
34UVEJPͷը໘ ΤσΟλ ίϯιʔϧ ΦϒδΣΫτ ཤྺͳͲ ϓϩοτ
ϔϧϓͳͲ !12 ᶃ ᶄ ᶅ ᶆ
ىಈ͠Α͏ w ىಈ w ͨ͠&YFSDJTF31SPKΛ্ཱͪ͛Δ w 3Λಈ͔ͯ͠ΈΑ͏ w ίϯιʔϧͰplot(iris) w
ύοέʔδΛΠϯετʔϧͯ͠ΈΑ͏ ͕͔͔࣌ؒΔͷͰҙ • install.packages(“tidyverse”) w εΫϦϓτΛ࡞ͬͯΈΑ͏ w 'JMF/FX'JMF34DSJQU !13
31SPKFDUͱ w ϓϩδΣΫτ୯ҐͰੳΛཧ͢Δ͘͠Έ w Ұ࿈ͷղੳͰඞཁʹͳΔϑΝΠϧ܈Λ·ͱΊͯѻ͏ w ࡞ۀσΟϨΫτϦ͕ͦ͜ʹͳΔ w ଞਓͱͷڞ༗͕͍͢͠ w
'JMF/FX1SPKFDUͰ࡞ !14
ڥΛઃఆ͠Α͏ w 5PPMT(MPCBM0QUJPOT͔Βڥઃఆ w (FOFSBMɿνΣοΫΛશͯ֎ͦ͏ w 3FTUPSFQSFWJPVTMZPQFOTPVSDFEPDVNFOUBUTUBSUVQ ͓͍ͯͯ͠ྑ͍ w $PEF4BWJOHɿΤϯίʔσΟϯάΛ65'ʹ
w "QQFBSBODFɿ͖ͳݟͨʹઃఆ͠Α͏ !15
3ͷجຊ
جຊ w GPSจ JGจ ؔ ͦͷଞʜ w ଞͷݴޠͱ͋·ΓมΘΒͳ͍ͷͰ ͻͭΑ͏ʹͳͬͨΒௐ ͍ͯͩ͘͞
w ྻͷࢀর͡·Γʂʂ !17
3Ͱͷσʔλܕ Ұͭͷ w -PHJDBM #PPMFBO w *OUFHFS w %PVCMF
w $PNQMFY w $IBSBDUFS w 'BDUPS w FUDʜ !18 ෳͷ w "UPNJD7FDUPS w .BUSJY w %BUB'SBNF w -JTU w FUDʜ
"UPNJD7FDUPS w ̍࣍ݩྻ w ཁૉશͯಉ͡ܕ શͯJOUFHFS શͯDIBSBDUFS ͳͲ w
ཁૉͷશͯΛ·ͱΊͯॲཧͰ͖Δʢ࢛ଇԋࢉͱ͔ʣ w c()Ͱ࡞Δ !19
"UPNJD7FDUPS !20 drink <- c(“beer”, “sake”, “whisky”) # ೖ drink
# ΦϒδΣΫτͷݺͼग़͠ price <- c(480, 700, 850) # ܕϕΫτϧ favorite <- c(TRUE, TRUE, TRUE) # ཧܕϕΫτϧ
.BUSJY w ̎࣍ݩྻ w ཁૉશͯಉ͡ܕ w ߦྻԋࢉ͕Ͱ͖Δʢੵͱ͔ʣ w ཁૉͷશͯΛ·ͱΊͯॲཧͰ͖Δʢ࢛ଇԋࢉͱ͔ʣ w
matrix()Ͱ࡞Δ !21
-JTU w ̍࣍ݩྻ w ཁૉͳΜͰ͍͍ 7FDUPSͷ֦ு w list()Ͱ࡞Δ w
ࣗ༝͕ΊͬͪΌߴ͍ !22
%BUB'SBNF ͓ͳ͡Έͷ࢛͍֯ςʔϒϧ • ֤ྻಉ͡͞ͷ Atomic vector w data.frame()Ͱ࡞Δ w data.frame(drink
= drink, price = price, favorite = favorite) w ༷ʑͳύοέʔδ͕%BUB'SBNFΛத৺ʹ࡞ΒΕ͍ͯΔ !23
%BUB'SBNFʹ৮Ζ͏ starwars <- read.csv("data/starwars.csv", stringsAsFactors = FALSE, fileEncoding = “UTF-8”)
head(starwars) # ઌ಄֬ೝ tail(starwars) # ඌ֬ೝ summary(starwars) # هड़౷ܭྔ str(starwars) # ֤ྻͷܕ֬ೝ !24
ϞμϯͳσʔλϑϨʔϜૢ࡞
ʮ5PPMʹਫ਼௨͢Δʯͱ͍͏͜ͱ ྉཧʹྫ͑Δͱ w แஸίϯϩΛ͑ΔΑ͏ʹͳΖ͏ w ϨγϐదٓݟΕΑ͍ ʮരͰσʔλΛѻ͑Δʯͱ͍͏͜ͱ w େͳࢼߦࡨޡΛ܁ΓฦͤΔ w
࣌ؒ༗ݶ ຊ࣭తͰͳ͍࡞ۀͬ͞͞ͱऴΘΒͤͯ ҿΈʹग़͔͚Α͏ݚڀ͠Α͏ !26
5JEZWFSTF ֓೦ w 3Ͱͷ༷ʑͳૢ࡞ *NQPSU &YQPSU 5SBOTGPSN 7JTVBMJ[BUJPO FUD ͕
౷ҰతͳΠϯλʔϑΣʔεͰग़དྷͨΒ ૉఢͩΑͶ ύοέʔδ w ্هΛ࣮ݱ͢ΔͨΊͷύοέʔδ܈ w install.packages(“tidyverse”) ͰΠϯετʔϧ w )BEMFZ8JDLIBN 34UVEJPࣾ ͕த৺ͱͳΓ։ൃ w ศར !27 ˞)BEMFZ8JDLIBN3քͷਆ
5JEZWFSTF !28
5JEZWFSTF !29 ಛʹ͜ΕΒ
library(tidyverse)
%BUB'SBNFͷجຊૢ࡞ EQMZS w ม ྻ ͷநग़ w ؍ଌ ߦ ͷநग़
w ؍ଌ ߦ ͷฒͼସ͑ w ৽ͨͳม ྻ ͷ࡞ w ूܭ w άϧʔϓԽ !31 • select() • filter() • arrange() • mutate() • summarise() • group_by()
͍ํ w ୈҾʹσʔλϑϨʔϜΛ༩͑Δ w ୈҾҎ߱Ͱྻ໊ΛΫΦʔςʔγϣϯແ͠Ͱ༩͑Δ w Γ৽ͨͳσʔλϑϨʔϜ !32
ͬͯΈΑ͏ select(starwars, name, gender, species) filter(starwars, species == "Human", height
<= 170) mutate(starwars, BMI = mass / (height/100)^2) arrange(starwars, gender, height) summarise(starwars, mean_mass = mean(mass, na.rm = TRUE), mean_height = mean(height, na.rm = TRUE)) grouped <- group_by(starwars, species) summarise(grouped, mean_mass = mean(mass, na.rm = TRUE), mean_height = mean(height, na.rm = TRUE), count = n()) !33
%>%
ύΠϓԋࢉࢠ%>% X %>% f X %>% f(y) X %>% f
%>% g X %>% f(y, .) !35 f(X) f(X, y) g(f(X)) f(y, X) લͷؔͷग़ྗΛ࣍ͷؔͷୈҾʹΘͨ͢ͷ $NE 4IJGU N $USM 4IJGU N Ͱೖྗ
ෳͷॲཧΛ͢Δ߹ df1 <- filter(starwars, species == "Human") df2 <- mutate(d1,
BMI = mass / (height/100)^2) df3 <- group_by(df2, gender) df4 <- summarise(df3, mean_BMI = mean(BMI, na.rm=TRUE), min_BMI = min(BMI, na.rm=TRUE), max_BMI = max(BMI, na.rm=TRUE) !36 # A tibble: 2 x 4 gender mean_BMI min_BMI max_BMI <chr> <dbl> <dbl> <dbl> 1 female 22.0 16.5 27.5 2 male 26.0 21.5 37.9
ෳͷॲཧΛ͢Δ߹ starwars %>% filter(species == "Human") %>% mutate(BMI = mass
/ (height/100)^2) %>% group_by(gender) %>% summarise(mean_BMI = mean(BMI, na.rm=TRUE), min_BMI = min(BMI, na.rm=TRUE), max_BMI = max(BMI, na.rm=TRUE)) %>%Λ͏͜ͱͰ ୭ʹͰಡΈ͍͢ίʔυʹʂʂ !37
࿅श ͷ࠷͍உੑΛ֬ೝͤΑ #.*ͷͬͱߴ͍ొਓ୭͔ ฏۉ͕࠷ߴ͍छԿ͔ ݕࡧͯͦ͠ͷ࢟Λ͔֬ΊΑ͏ !38
࣍ճ·Ͱͷ՝
՝ 1. ൃۭߓ (origin) ͝ͱͷඈߦػศͷ, ඈߦڑͷฏۉ, ग़ൃ࣌ࠁԆͷ ฏۉΛٻΊΑ 2. ͝ͱͷग़ൃ࣌ࠁԆͷฏۉΛٻΊΑ
3. ͝ͱʹܽߤʹͳͬͨศͷΛௐΑ ʢܽߤͩͱdep_delayͱarr_delay͕NAʹͳΔʣ 4. ࣮ࡍʹඈΜͩศͷඈߦڑͷඪ४ภࠩΛग़ൃۭߓ͝ͱʹٻΊ, ঢॱʹ ฒΑ 5. ͝ͱʹ, ۭߓLGA͔Β࠷ॳʹඈΜͩศͱ࠷ޙʹඈΜͩศΛநग़ͤΑ 6. ࣮ࡍʹඈΜͩศͷ͏ͪ, ఆࠁ௨Γग़ൃͨ͠ศͷׂ߹ΛௐΑ ώϯτɿdplyrͷؔͷதͰ n() Λ͏ͱߦΛࢉग़Ͱ͖Δ !40